Что нового

Обработка @error от SQL в скрипте компилированном под х64

vovsla

Осваивающий
Сообщения
607
Репутация
36
Если скрипт откомпиоировать не поставив галку х64, то часть скрипта указанная ниже не выдает ошибок даже в ОС х64.

Код:
_SQLite_Startup()
If @error Then
	MsgBox(262144+16, $Title, 'Ошибка использования библиотеки sqlite3.dll'&@CRLF&'Работа программы будет завершена.')
	If $Debug=True Then MsgBox(262144+16, $Title, 'Ошибка SQL - '&@error)
	Exit
EndIf


Но если откомпилировать скрипт поставив галку х64, то срабатывает условие, появляется сообщение об ошибке, код ошибки - 0
Судя по кодам 0 - успешная работа https://www.sqlite.org/c3ref/c_abort.html
Можно было бы изменить условие на "If @error>0 Then", но в скрипте есть конструкции "If Not = $SQLITE_OK Then" и не понятно что делать с ними
Использовать скрипт скомпилированный под х32 в ОС х64 нельзя, т.к. тогда он не видит некоторые файлы в "C:\Windows\System32"
По данной проблеме удалось найти одну тему, но предлагаемый фикс уже удалили
https://www.autoitscript.com/forum/topic/96541-sqlite-library-used-incorrectly-error/
Как можно исправить такой баг?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Скачайте DLL для x64 - sqlite3_x64.dll - по этой ссылке. DLL для 32-битной версии ОС не будет работать в 64-битной версии и наоборот.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Спасибо, теперь работает.
Я и раньше пробовал библиотеки х64, брал здесь https://www.sqlite.org/download.html
Только есть одно но, на sqlite.org в архиве х64 лежит файл sqlite3.dll и я его прямо так и использовал - не работало.
Оказывается, файл нужно переименовать в sqlite3_x64.dll
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Yashied [?]
Скачайте DLL для x64 - sqlite3_x64.dll - по этой ссылке. DLL для 32-битной версии ОС не будет работать в 64-битной версии и наоборот.
Разве библиотека не должна сама скачивать файл в зависимости от того для какой архитектуры скомпилирован файл? Ведь по-умолчанию функция _SQLite_Startup() скачивает файлы из интернета для работы.
 

veretragna

Как писал, так и работает.
Сообщения
140
Репутация
10
Уже не скачивает. По URL, зашитому в библиотеках AutoIt'a, dll-файла нет.
Столкнулся с точно такой же проблемой, пришлось качать вручную с оф.сайта sqlite.org.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Хорошо, что не скачивает, а то вся отладка проходит на ПК с инетом, но потом программа будет использоваться там где инета нет.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Я думаю лучше будет dll в FileInstall засунуть и уже оттуда брать.
 
Верх