Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6 -> C# цикл / 8 сообщений из 8, страница 1 из 1
12.06.2014, 12:11
    #38668365
VB6 -> C# цикл
Всем привет! Есть непонятка в VB6-коде:
есть цикл For, в нем следующее выражение (оно 100% рабочее):

Код: vbnet
1.
Mid$(sOutput, 1) = EncodeQuantum(b)



где sOutput - string;
EncodeQuantum() - функция, которая возвращает string.

Не могу понять как функции Mid может присваиваться строка, если она сама возвращает строку.
...
Рейтинг: 0 / 0
12.06.2014, 12:41
    #38668382
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6 -> C# цикл
Павел ЗигмундовичНе могу понятьа F1 на клавиатуре нет и в гугле забанили?

Mid$ - единственная "двухсторонняя" функция, которая может быть слева от знака равенства.

в C# такого извращения нет, для формирования строк используется StringBuilder - там есть масса полезных фишек.
...
Рейтинг: 0 / 0
12.06.2014, 12:58
    #38668388
VB6 -> C# цикл
Shocker.Pro,
Для VB6 F1 не катит - MSDN библиотека не установлена и найти ее я не смог.
...
Рейтинг: 0 / 0
12.06.2014, 13:08
    #38668399
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6 -> C# цикл
Павел Зигмундовичи найти ее я не смог.значит-таки забанили в гугле

http://rutracker.org/forum/viewtopic.php?t=2566619
Данные продукты предоставлены исключительно для ознакомления.


нужен только диск 4 и 5 кажется
...
Рейтинг: 0 / 0
12.06.2014, 15:56
    #38668476
VB6 -> C# цикл
Shocker.Pro,

О!!! Спасибо большущее - уже качаю то что нужно.
...
Рейтинг: 0 / 0
12.06.2014, 16:12
    #38668493
VB6 -> C# цикл
В итоге для VB6:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 Sub Main()
        Dim input As String, startIndex As Integer

        input = "Some test string"
        startIndex = 5
        Mid$(input, startIndex + 1, 13) = "new string123"

        Console.WriteLine(input)
        Console.ReadKey()

        'result:
        'Some new string1

    End Sub



На C# написал следующее:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
static void Main(string[] args)
        {
            string input = "Some test string";
            int startIndex = 5;
            string replStr = input.Substring(startIndex);
            input = input.Replace(input.Substring(startIndex), "new string123".Substring(0, replStr.Length));

            Console.WriteLine(input);
            Console.ReadKey();

            //result:
            //Some new string1
        }
...
Рейтинг: 0 / 0
13.06.2014, 00:22
    #38668685
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB6 -> C# цикл
Павел Зигмундович,

Хм...а если протестировать эти три варианта, то результаты будут разные на VB6 и c#:

Some test string bla bla
new string123456

Some test string
new string123456

Some test string bla bla
new string
...
Рейтинг: 0 / 0
13.06.2014, 14:38
    #38668953
VB6 -> C# цикл
iMrTidy,

Переделал:

VB6:

Код: vbnet
1.
2.
3.
4.
5.
6.
Dim sOutput, replString

sOutput = "123456789"
replString = "Repl"

Mid$(sOutput, 7, 4) = replString



C#:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
static void Main(string[] args)
        {
            Console.WriteLine(Mid("123456789", "Repl", 7, 4));
            Console.ReadKey();
        }

public static string Mid(string inpStr, string replStr, int startIndex, int longIndex)
        {
            if (longIndex > 0)
            {
                --startIndex; //для уравнения стартовых индексов VB & C#
                int inpStrLen = inpStr.Length;
                int replStrLen = replStr.Length;
                if (0 <= startIndex && startIndex <= inpStrLen)
                {
                    int len = inpStrLen - startIndex;
                    string str1 = String.Empty;
                    string str2 = String.Empty;

                    if (len > replStrLen)
                    {
                        str1 = inpStr.Substring(startIndex, longIndex > replStrLen ? replStrLen : longIndex);
                        str2 = replStr.Substring(0, longIndex > replStrLen ? replStrLen : longIndex);
                    }
                    else if (len < replStrLen)
                    {
                        str1 = inpStr.Substring(startIndex, inpStrLen - startIndex > 0 ? len  : longIndex);
                        str2 = replStr.Substring(0, inpStrLen - startIndex > 0 ? len : longIndex);
                    }
                    else
                    {
                        str1 = inpStr.Substring(startIndex, len);
                        str2 = replStr.Substring(0, len);
                    }
                    return str1.Equals(str2) ? inpStr : inpStr.Replace(str1, str2);
                }
                else return String.Empty;
            }
            else return inpStr;
        }




Результаты протестировал - совпадают)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB6 -> C# цикл / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]