Эквивалент функции String $ () VB. Net? - PullRequest
0 голосов
/ 04 мая 2020

Я переносу приложение из VB6 в VB. Net, которое использует функцию String $ () .

Мой вопрос таков: какой «эквивалент» VB6 String $ () в следующем коде?

Dim Symbol As String=""
Dim iRet As Long
iRet = GetLocaleInfo(LCID, LOCALE_SCURRENCY, lpLCDataVar, 0)
Symbol = String$(iRet, 0)

Обратите внимание, что String$() - это функция, которая возвращает повторяющуюся символьную строку указанной длины:

Синтаксис:

String$(number, character)

number Длина возвращаемой строки.

character Требуется. Код символа, указывающий символ или строковое выражение, первый символ которого используется для построения возвращаемой строки.

( ссылка )

Если я удалю $ , Это даст мне ошибку, что "String" является классом и не может использоваться как выражение .

Check error into Image

Ответы [ 3 ]

3 голосов

Эквивалент String $ (в старых версиях BASIC) равен StrDup (VB. NET).

Итак, в вашем случае:

Symbol = StrDup(iRet, Chr(0))
3 голосов
/ 04 мая 2020

Этот String конструктор является правильным способом создания String, содержащего указанное c число указанного c символа, например,

Dim c = "0"c
Dim count = 10
Dim str As New String(c, count)
0 голосов
/ 04 мая 2020

Код, похоже, получает символ валюты (и десятичный разделитель) для культуры. Было бы лучше написать его, используя методы. NET вместо того, чтобы на полпути использовать VB6 in. NET.

Например,

Imports System.Globalization

Module Module1

    Sub Main()
        Dim lcid = 2057
        Dim ci As New CultureInfo(lcid)
        Console.WriteLine(ci.EnglishName)
        Console.WriteLine(ci.NumberFormat.CurrencySymbol)
        Console.WriteLine(ci.NumberFormat.NumberDecimalSeparator)

        Console.ReadLine()

    End Sub

End Module

output

Engli sh (Великобритания)
£
.

В документации CultureInfo Class содержится гораздо больше информации .

...