1

Тема: AHK: Инициализация переменной с помощью StrPut()

Var := "ёжзикл тестовый текст"

MsgBox, % "Content = " StrGet(&Var, A_IsUnicode ? "UTF-16" : "CP0") "`nVar = " Var

VarSetCapacity(Var2, StrPut(Var) * (A_IsUnicode ? 2 : 1))
StrPut(Var, &Var2)

MsgBox, % "Content2 = " StrGet(&Var2, A_IsUnicode ? "UTF-16" : "CP0") "`nVar2 = " Var2

Кто-то может сказать, почему во втором случае содержание переменной искажается?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

2 (изменено: creature.ws, 2013-01-14 10:16:08)

Re: AHK: Инициализация переменной с помощью StrPut()

Var := "ёжзикл тестовый текст"

MsgBox, % "Content = " StrGet(&Var, A_IsUnicode ? "UTF-16" : "CP0") "`nVar = " Var

VarSetCapacity(Var2, StrPut(Var) * (A_IsUnicode ? 2 : 1))
StrPut(Var, &Var2)
VarSetCapacity(Var2, -1)

MsgBox, % "Content2 = " StrGet(&Var2, A_IsUnicode ? "UTF-16" : "CP0") "`nVar2 = " Var2

Я бы перефразировал — почему без использования varsetcapacity(var2, -1) содержимое var2 таки отображается и отображется именно так

Наверное, можно назвать эту особенность поведения «платой за динамическую слабую неявную типизацию и отсутствие необходимости инициализировать переменные».

3

Re: AHK: Инициализация переменной с помощью StrPut()

Да, почему не воспроизводятся именно пять символов, начиная со второго? Что-то ничего путного в голову не приходит.

4

Re: AHK: Инициализация переменной с помощью StrPut()

Если в коде сообщения #1 закомментировать первый Msgbox, то var2 будет представлена в виде «ё», предположу, что
«тестовый текст» из некого общего буфера strget-strput берётся.

5

Re: AHK: Инициализация переменной с помощью StrPut()

creature.ws пишет:

Я бы перефразировал — почему без использования varsetcapacity(var2, -1) содержимое var2 таки отображается и отображется именно так

И на этом спасибо .

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder