Тема: AHK: Ошибка в коде
Вот кусок кода, шифрующий заданную строку:
String := "75abdb0c192352a4097cd13faf107baaf361d53aac12"
While Mod(StrLen(String), 2)
String := "0" String
Loop % StrLen(String)/2
{
if toappend != ""
LastOut := toappend ;сохраняем результат прошлой интерации цикла, если она не первая
Out := "0x" SubStr(String, A_Index*2-1, 2) ;группируем строку по 2 знака и добавляем префикс 16ричного числа
const := 0x42 ;задаем константу для шифровки первой группы
msgbox % out "+" const "=" out + const
if LastOut = ""
toappend := out + const ;шифруем первую группу
else
toappend := out + LastOut ;шифруем все прочие
msgbox %toappend%
VarSetCapacity(toappend,65,0)
DllCall("msvcrt\_i64toa", Int64,toappend, Str,toappend, Int,16) ;конвертируем результат в 16ричное число
msgbox %toappend%
RegExMatch(toappend, ".{2,2}$", toappend) ;оставляем только последние 2 цифры и добавляем префикс
toappend := "0x" toappend
MsgBox %toappend%
}
Начиная со строки if LastOut = "" результат функции где-то теряется. Причем в предшествующем msgbox'e все складывается чудно, а вот под if'кой - нет. Что за хрень?
ЗЫ В строке предназначенной для обрезки 2 последних цифр была ошибка, исправил. Впрочем функция по-прежнему не работает.