2016-01-29 3 views
0

Есть странный проект Access, где найти эту строку:

strUserName = String$(39, 0) 

Какие String$ средства?

+0

Я думаю, что «String» относится к типу значения, а «$» - это ссылка на целевую конкретную информацию (т. Е. В ячейке 39,0). Таким образом, это может означать ... получить значение в ячейке 39,0 и интерпретировать его как строку для инициализации имени пользователя. Строка обычно относится к типу, основанному на символах, который удобен для хранения слов, предложений, ... – floppy12

+0

Строка означает строку длины x символа y, поэтому строка (5,33) = "!!!! ! ", thats 39 chr (0) 's –

+0

Возможный дубликат [в чем смысл знака доллара после имени метода в vb.net] (http://stackoverflow.com/questions/8341524/what-is- значение-of-the-dollar-sign-after-a-method-name-in-vb-net) – Chrismas007

ответ

4

Что Строка $ означает?

String$() означает почти то же самое, как String(), но String() может принимать и возвращать Variant и String$() не может.

Например, String() будет принимать Null для символов аргумента и возвращать Null ...

? String(5, Null) 
Null 

Но подставляя String$() для String() вызывает ошибки 94, "Недопустимое использование". ..

? String$(5, Null) 

Что касается вашего примера ... String$(39, 0) ..., который возвращает строку из 39 нуль-байтовых символов (Chr(0)), которая не совпадает с Null.

+1

Не следует ли, когда это возможно, использовать «строго типизированные» (или это * строчные *?) Версии? Это не похоже на то, что Null слишком распространен в VBA .... 'String $', 'Left $', 'Mid $' все работают со строками и не несут неявные преобразования типов, тогда как 'String',' Left' , 'Mid' [и другие] (https: // github.com/rubberduck-vba/Rubberduck/issues/407 # issuecomment-143100088) работают с неявным 'Variant', часто без dev даже замечая. В принципе, [это хорошая идея?] (Https://cloud.githubusercontent.com/assets/5751684/10116083/ca37b650-63f2-11e5-860b-42f8103533ff.png) –

+0

Я думаю, что это зависит от контекста, Матем. С такими фиксированными, известными аргументами, как в примере OP, 'String $ (39, 0)' не имеет никакого преимущества перед 'String (39, 0)', насколько я могу видеть. Если аргументы были переменными, случай для 'String $()' мог бы быть более сильным. В любом случае, я не собирался защищать друг друга ... просто объясните * «что означает String $» *. :-) – HansUp

2

Это встроенная функция, как правило, используется без $:

String(number, character) 

Она возвращает строку с <number> символов.

E.g. String(5, "A") -> AAAAA

Очевидно, вы также можете использовать код Ascii для character, поэтому ваш пример возвращает 39 * Chr (0).

0

строка означает строку длиной х символов у, поэтому строка (5,33) = "!!!!!", то будет 39 CHR (0) 's

Смежные вопросы