Банальный перевод кода

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

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

Банальный перевод кода

Сообщение Ramzes » 11.12.2006 (Пн) 11:47

Кто может перевести эти строки на C#, интересует момент с делегатом
Код: Выделить всё

Private Delegate Sub _dChangeVal(Val as String)
Private m_Del as new _dChangeVal(adressOf ChangeVal)

Private sub ChangeVal(val as String)
'some code here
end sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.12.2006 (Пн) 12:07

Ramzes, а ведь по-моему я и тебе давал этот линк...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

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

GSerg
Давал, я просто про него забыл :oops:
сенькс

Плохо работают эти переводчики кода, один не загрузился, один мнее не подходит, а один выдал код, с ошибкой : (

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 11.12.2006 (Пн) 23:14

Код: Выделить всё
private delegate void _dChangeVal(string val);
private _dChangeVal m_Del = new _dChangeVal(ChangeVal);

private void ChangeVal(string val)
{
        //some code here
}

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

Сообщение Ramzes » 12.12.2006 (Вт) 15:50

mad_Max
ты пробовал свой код? :roll:

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 12.12.2006 (Вт) 17:14

пардон, упустил из виду, что метод не статический...
Тогда просто инициализацию положить в конструктор класса, где все это объявлено...
Код: Выделить всё
// если бы метод был статическим, то заработало бы...
class abc
{
   private delegate void _dChangeVal(string val);
   private _dChangeVal m_Del = ChangeVal;

   private static void ChangeVal(string val)
   {
      //some code here
   }
}

// иначе придется так...
class def
{
   private delegate void _dChangeVal(string val);
   private _dChangeVal m_Del;

   private void ChangeVal(string val)
   {
      //some code here
   }

   public def()
   {
      m_Del = ChangeVal;
   }
}

во 2м случае Reflector не нашел отличий от VB-варианта.

cosmo_vk
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 26.12.2006 (Вт) 12:07
Откуда: Владимирская обл, г.Ковров

Сообщение cosmo_vk » 18.03.2007 (Вс) 23:23

Есть код на Visual Vasic:
Код: Выделить всё
Const strwordReplace As String = "17235000000"
        Dim strword() As String = {"17235836000", _
                                    "17235820000", _
                                    "17235812000", _
                                    "17235808000", _
                                    "17235573000"}
        Dim X As Integer
        RichTextBox1.SelectAll()
        Dim sData As String = RichTextBox1.SelectedText
        Dim zagolovokAfterReplace As String = "Внимание!!!"
        Dim textInmessageAfterReplace As String = "     Замены произведены!" & _
            Chr(10) & "Сохраните исправленный файл!!!"
        For X = 0 To 4 Step 1
            On Error Resume Next
            sData = Replace(sData, strword(X), strwordReplace)
        Next X
        RichTextBox1.SelectedText = sData
        MessageBox.Show(textInmessageAfterReplace, zagolovokAfterReplace, MessageBoxButtons.OK, MessageBoxIcon.Information)


Попробовал портировать его на С#.NET:
Код: Выделить всё
const string strwordReplace = "17235000000";
            string[] strword = { "17235836000", "17235820000", "17235812000", "17235808000", "17235573000" };
            int X;
            richTextBox2.SelectAll();
            string sData = richTextBox2.SelectedText;
            string zagolovokAfterReplace = "Внимание!!!";
            string textInmessageAfterReplace = " Замены произведены!" + "Сохраните исправленный файл!!!";
            for (X = 0; X <= 4; )
            {
                sData = Replace(sData, strword(X), strwordReplace);
             }
            richTextBox2.SelectedText = sData;
            MessageBox.Show(textInmessageAfterReplace, zagolovokAfterReplace, MessageBoxButtons.OK, MessageBoxIcon.Information);


Но вылезает ошибка на strword(X) и Replace!
По Replace ошибка такая: "The name 'Replace' does not exist in the current context."
По strword(x): Strword is 'variable' but is used like a 'method'.
Неужели функцию Replace придется самому описывать?
И почему Strword так коряво вылезает? :?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.03.2007 (Вс) 23:32

Не верю, что "портированный" код получен автоматическим переводчиком... Сильно сомневаюсь, чтобы он допускал такие детские ошибки...
А если это портировал ты ручками, то сходи по ссылке выше, а потом изучи основы C#, самые-самые, а то даже неудобно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

cosmo_vk
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 26.12.2006 (Вт) 12:07
Откуда: Владимирская обл, г.Ковров

Сообщение cosmo_vk » 19.03.2007 (Пн) 7:12

GSerg писал(а):Не верю, что "портированный" код получен автоматическим переводчиком... Сильно сомневаюсь, чтобы он допускал такие детские ошибки...
А если это портировал ты ручками, то сходи по ссылке выше, а потом изучи основы C#, самые-самые, а то даже неудобно.

Я через developerfusion.co.uk перегонял, но правда кидал туда только часть кода, а не всю программу. Результат как видите выше.
Вечером попробую по другому переделать...

P.S. Основы изучаю последние 2 недели и то только по вечерам.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.03.2007 (Пн) 9:25

cosmo_vk писал(а):Неужели функцию Replace придется самому описывать?

Угу. Либо использовать независимую от языка стандартную функцию CLR.
cosmo_vk писал(а):И почему Strword так коряво вылезает? :?

Потому что индекс массива указывается в квадратных скобках, а не в круглых.
Изображение

cosmo_vk
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 26.12.2006 (Вт) 12:07
Откуда: Владимирская обл, г.Ковров

Сообщение cosmo_vk » 21.03.2007 (Ср) 22:52

tyomitch писал(а):
cosmo_vk писал(а):Неужели функцию Replace придется самому описывать?

Угу. Либо использовать независимую от языка стандартную функцию CLR.

Это в каком смысле независимую? Можно пример, хотя бы в направлении замен в тексте?

P.S. Попробовал через Regex реализовать, но чего-то не получается...
Прога просто подвисает.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.03.2007 (Чт) 0:49

cosmo_vk писал(а):
tyomitch писал(а):
cosmo_vk писал(а):Неужели функцию Replace придется самому описывать?

Угу. Либо использовать независимую от языка стандартную функцию CLR.

Это в каком смысле независимую? Можно пример, хотя бы в направлении замен в тексте?

http://msdn2.microsoft.com/en-us/librar ... place.aspx
Изображение

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 22.03.2007 (Чт) 21:54

И еще,

string[] s = new string[] {"", "", ""} ...
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali


Вернуться в C#

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

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

    TopList