| За данное сообщение: +1 | Всего отзывов: 1 | Положительные: +1 | Отрицательные: 0 |
Столкнулся с ошибкой, если в пути к файлу базы имеются кирилические символы, всплывает ошибка "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 |
Отзывы участников:
| Отзыв добавлен: 11 апреля 2012, 21:15 Полезная информация. Я пока не встречался с этим — везде пути ansi-шные :-)
|