Помогите перевести Basic->C#

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Помогите перевести Basic->C#

Сообщение Al Prad » 30.05.2008 (Пт) 15:09

Добрый день!

Пишу программу, которая считывает значения переменных из другого приложения. Застрял в самом начале :)

На бейсике было:

Код: Выделить всё
Dim Tags As Object
Tags = CreateObject("CCHMITags.HMITags")
TextBox1.Text = Tags("MyVarName").Read


Теперь на С#
Код: Выделить всё
Object Tags = Activator.CreateInstance (Type.GetTypeFromProgID("CCHMITags.HMITags"));
textBox1.Text = Tags("MyVarName").Read ;


В последней строчке получаю
Error 'Tags' is a 'variable' but is used like a 'method'

Подскажите, как сделать правильно ?
Спасибо.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 30.05.2008 (Пт) 15:43

textBox1.Text = Tags["MyVarName"].Read();

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 30.05.2008 (Пт) 15:56

Ramzes писал(а):textBox1.Text = Tags["MyVarName"].Read();


:(
Error 1 Cannot apply indexing with [] to an expression of type 'object'

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 30.05.2008 (Пт) 16:41

Tags это коллекция?

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 30.05.2008 (Пт) 16:51

Ramzes писал(а):Tags это коллекция?

Не могу ответить.
Вопрос выше моего уровня :oops:

Есть работающий пример на бейсике, я лишь пытаюсь его использовать, переделав на С.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 30.05.2008 (Пт) 17:08

это не Visual Basic .Net?
если нет, тогда тебе в рефлексию (System.Reflection) :) иначе никак

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Сообщение Atoman » 30.05.2008 (Пт) 17:10

Перевел в SharpDevelop'е.
Может так будет работать.

Код: Выделить всё
object Tags = null;
Tags = Interaction.CreateObject("CCHMITags.HMITags");
TextBox1.Text = Tags("MyVarName").Read;

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 30.05.2008 (Пт) 17:12

Atoman
:scratch: эээ

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 30.05.2008 (Пт) 18:00

Tags это коллекция?
Object Tags = Activator.CreateInstance (Type.GetTypeFromProgID("CCHMITags.HMITags"));


object z = Tags.GetType().InvokeMember("", System.Reflection.BindingFlags.GetProperty, null,Tags,new object[]{"MyVarName"});
TextBox1.Text = z.GetType().InvokeMember("Read", System.Reflection.BindingFlags.InvokeMethod, null,z,new object[]{})
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 02.06.2008 (Пн) 9:04

Ramzes писал(а):это не Visual Basic .Net?
если нет, тогда тебе в рефлексию (System.Reflection) :) иначе никак


Это именно VB.NET 2005
Последний раз редактировалось Al Prad 02.06.2008 (Пн) 9:22, всего редактировалось 1 раз.

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 02.06.2008 (Пн) 9:10

Atoman писал(а):Перевел в SharpDevelop'е.
Может так будет работать.

Код: Выделить всё
object Tags = null;
Tags = Interaction.CreateObject("CCHMITags.HMITags");
TextBox1.Text = Tags("MyVarName").Read;


Error 1 The name 'Interaction' does not exist in the current context

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 02.06.2008 (Пн) 9:15

ANDLL писал(а):
Tags это коллекция?
Object Tags = Activator.CreateInstance (Type.GetTypeFromProgID("CCHMITags.HMITags"));


object z = Tags.GetType().InvokeMember("", System.Reflection.BindingFlags.GetProperty, null,Tags,new object[]{"MyVarName"});
TextBox1.Text = z.GetType().InvokeMember("Read", System.Reflection.BindingFlags.InvokeMethod, null,z,new object[]{})


Error 1 The name 'Tags' does not exist in the current context
Error 2 The name 'Tags' does not exist in the current context
Error 3 Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 02.06.2008 (Пн) 18:33

Al Prad

У меня работает.
Код: Выделить всё
    private void Form1_Load(object sender, EventArgs e)
    {
      object Tags = null;
      Tags = Activator.CreateInstance(Type.GetTypeFromProgID("CCHMITags.HMITags"));

      object z = Tags.GetType().InvokeMember(
        "", System.Reflection.BindingFlags.GetProperty,
        null, Tags, new object[] { "MyVarName" });

      textBox1.Text = (string)z.GetType().InvokeMember(
        "Read", System.Reflection.BindingFlags.InvokeMethod,
        null, z, new object[] { });
    }
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 03.06.2008 (Вт) 8:33

Nord777 писал(а):Al Prad

У меня работает.
Код: Выделить всё
    private void Form1_Load(object sender, EventArgs e)
    {
      object Tags = null;
      Tags = Activator.CreateInstance(Type.GetTypeFromProgID("CCHMITags.HMITags"));

      object z = Tags.GetType().InvokeMember(
        "", System.Reflection.BindingFlags.GetProperty,
        null, Tags, new object[] { "MyVarName" });

      textBox1.Text = (string)z.GetType().InvokeMember(
        "Read", System.Reflection.BindingFlags.InvokeMethod,
        null, z, new object[] { });
    }


Компиллируется без ошибок, но при запуске получается такое:
Вложения
Untitled-1 copy.png
Untitled-1 copy.png (25.98 Кб) Просмотров: 1685

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.06.2008 (Вт) 9:11

Код: Выделить всё
    private void Form1_Load(object sender, EventArgs e)
    {
      object Tags = null;
      Tags = Activator.CreateInstance(Type.GetTypeFromProgID("CCHMITags.HMITags"));

      object z = Tags.GetType().InvokeMember(
        "", System.Reflection.BindingFlags.GetProperty,
        null, Tags, new object[] { "MyVarName" });

      textBox1.Text = z.GetType().InvokeMember(
        "Read", System.Reflection.BindingFlags.InvokeMethod,
        null, z, new object[] { }).ToString();
    }

Al Prad
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 16.08.2007 (Чт) 12:46
Откуда: Одесса

Сообщение Al Prad » 03.06.2008 (Вт) 11:56

Ramzes писал(а):
Код: Выделить всё
    private void Form1_Load(object sender, EventArgs e)
    {
      object Tags = null;
      Tags = Activator.CreateInstance(Type.GetTypeFromProgID("CCHMITags.HMITags"));

      object z = Tags.GetType().InvokeMember(
        "", System.Reflection.BindingFlags.GetProperty,
        null, Tags, new object[] { "MyVarName" });

      textBox1.Text = z.GetType().InvokeMember(
        "Read", System.Reflection.BindingFlags.InvokeMethod,
        null, z, new object[] { }).ToString();
    }


YES! Заработало. Как сложно... Это для каждой переменной нужен свой object z? Ну ладно.

Спасибо за помощь с чтением тегов. Еще в принципе есть запись; пока она , вроде не нужна , но вдруг потом пригодится. На VB запись делалась так:
Код: Выделить всё
    Dim Tags As Object
     
    Set Tags = CreateObject("CCHMITags.HMITags")
           
    Tags("TagName1").Write textBox1.Text
    Tags("TagName2").Write textBox2.Text

А как на С#?.
В принципе, если сложно, то не ломайте головы. Я и так уже благодарен всем за помощь.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 03.06.2008 (Вт) 12:59

Al Prad
по тому же принципу


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList  
cron