Доброго времени суток.
Есть такой вот код:
Procedure RegSetString(Key, SubKey.s, ValueName.s, String.s, Type.b = #REG_SZ) Protected hKey If Not RegOpenKeyEx_(Key, SubKey, 0, #KEY_ALL_ACCESS, @hKey) And hKey RegSetValueEx_(hKey, @ValueName, 0, Type, @String, Len(String) +1) RegCloseKey_(hKey) EndIf EndProcedure RES$="SOFTWARE\Test123" TestString$="d5aa2680a2404a100fd31121a2e3aaba" RegSetString(#HKEY_CURRENT_USER, REG$, "StringA", TestString$)
Создается в реестре запись.
Имя параметра появляется "StringA"
Тип записи REG_SZ
А вот далее интереснее: значение вместо:
d5aa2680a2404a100fd31121a2e3aaba
Стает как бы обрезаным:
d5aa2680a2404a10
В чем может быть причина, если учесть, что вручную через REGEDIT запись спокойно создается с таким значением. Также спокойно читается и с PureBasic. даже все 4 компилятора перепробывал. Не помогает.
Ответ получен от V Dryagin из чата в Телеграмме
Судя по тому, что длина урезалась в два раза, возможно, вместо Len нужно использовать StringByteLength, с указанием формата.
Благодарю за помощь!
Отредактировано Black Wolf (14.12.2022 05:01:23)