1 (изменено: NektoN95, 2016-09-27 21:23:22)

Тема: 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 последних цифр была ошибка, исправил. Впрочем функция по-прежнему не работает.

2

Re: AHK: Ошибка в коде

Этот результат должен быть?

String := "75abdb0c192352a4097cd13faf107baaf361d53aac12"
Const := 0x42
loop % StrLen(String)//2
{
	Out := Format("{:#x}", "0x"	SubStr(String, A_Index*2-1,2)	)
	toappend := Format("{:02x}",	out + const	)
	msgbox % Format("{:02x}",	out ) "+" Format("{:02x}",	const ) "=" toappend
}

3 (изменено: NektoN95, 2016-09-27 23:05:17)

Re: AHK: Ошибка в коде

yalanne При запуске пишет Сall to nonexistent function c указанием на 5 строку.
Собственно, я уже сам со своим кодом разобрался, но спасибо за участие)

4 (изменено: yalanne, 2016-09-28 06:59:20)

Re: AHK: Ошибка в коде

Версия ahk старая.
Обновить тут можно:
клик