Вверх ↑
Ответов: 4612
Рейтинг: 746
#1: 2018-01-31 15:50:32 ЛС | профиль | цитата
Ковырял компоненты SQLite. Если в функции sqlite3_exec() указывается 5-ый параметр, то он должен быть освобождён по sqlite3_free():
https://sqlite.org/c3ref/exec.html писал(а):
If the 5th parameter to sqlite3_exec() is not NULL then any error message is written into memory obtained from sqlite3_malloc() and passed back through the 5th parameter. To avoid memory leaks, the application should invoke sqlite3_free() on error message strings returned through the 5th parameter of sqlite3_exec() after the error message string is no longer needed.

Надо поправить в файлах:
hiSQLite_QueryScalar.pas
hiSQLite_Query.pas
hiSQLite_Exec.pas
hiDS_SQLite.pas

Сделал модификацию этих компонентов - добавил свойство Charset[ANSI, UTF-8], чтобы можно было без лишних телодвижений пользоваться кодировкой UTF-8.

Также:

1) Причесал код, выбросил лишнее
2) hiCharset.pas
- Причёсана функция CodePage1ToCodePage2
- Добавлены функции StringToUTF8, UTF8ToString для удобочитаемости
3) SqLite3Api.pas
- Косметические изменения
- Добавлены несколько объявлений пока не используемых функций
- Объявлен тип PCharPointers/TCharPointers для использования в TExecCallBack (раньше похожее было объявлено в каждом компоненте)
4) Из стандартного примера "SQLLite_Demo.sha" выброшены сохранение/загрузка положения окна и имени файла из реестра

SQLite components mod 2018-04-04.zip
карма: 26

0
Редактировалось 2 раз(а), последний 2018-04-04 13:09:28