Отзывы о сообщении DNK (комментарий на сайте)

За данное сообщение: +1 Всего отзывов: 1 Положительные: +1 Отрицательные: 0
DNK
Столкнулся с ошибкой, если в пути к файлу базы имеются кирилические символы, всплывает ошибка "Failed to open database "$$$$$$$$" : unable to open database file." С помощью Вадима выяснил, что проблема заключается в необходимости передавать имя файла в кодировке "UTF-8", а не Win.

Index: SQLite3.pas
===================================================================
--- SQLite3.pas (revision 2418)
+++ SQLite3.pas (working copy)
@@ -57,7 +57,7 @@
TSQLiteResult = ^PChar;
TSQLiteStmt = Pointer;

-function SQLite3_Open(dbname: PChar; var db: TSqliteDB): integer; cdecl; external 'sqlite3.dll' name 'sqlite3_open';
+function SQLite3_Open(dbname: PUTF8String; var db: TSqliteDB): integer; cdecl; external 'sqlite3.dll' name 'sqlite3_open';
function SQLite3_Close(db: TSQLiteDB): integer; cdecl; external 'sqlite3.dll' name 'sqlite3_close';
function SQLite3_Exec(db: TSQLiteDB; SQLStatement: PChar; CallbackPtr: Pointer; Sender: TObject; var ErrMsg: PChar): integer; cdecl; external 'sqlite3.dll' name 'sqlite3_exec';
function SQLite3_Version(): PChar; cdecl; external 'sqlite3.dll' name 'sqlite3_libversion';
Index: SQLiteTable3.pas
===================================================================
--- SQLiteTable3.pas (revision 2418)
+++ SQLiteTable3.pas (working copy)
@@ -123,6 +123,7 @@
var
Msg: pchar;
iResult: integer;
+ utf8Str: UTF8String;
begin
inherited Create;

@@ -130,7 +131,8 @@

Msg := nil;
try
- iResult := SQLite3_Open(PChar(FileName), Fdb);
+ utf8Str := AnsiToUtf8(FileName);
+ iResult := SQLite3_Open(PUTF8String(utf8Str), Fdb);

if iResult <> SQLITE_OK then
if Assigned(Fdb) then

Отзывы участников:

Ерёмин А.А.
Ерёмин А.А.
Отзыв: +1 +1
Отзыв добавлен: 11 апреля 2012, 21:15

Полезная информация. Я пока не встречался с этим — везде пути ansi-шные :-)