| Autor |
Nachricht |
LittleBen 
      
Beiträge: 166
Win 7, Mac OS
Delphi 7
|
Verfasst: So 09.10.11 11:27
Meinte etwas anderes.
Es müssen doch eigentlich nur solche Funktionen in die Klasse, da die aus der DLL stammen. Aber solche function SQLiteErrorStr(SQLiteErrorCode: Integer): AnsiString; sollen nicht rein. So ist es, oder?
|
| |
|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
jaenicke
      
Beiträge: 15833
Erhaltene Danke: 737
XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
|
Verfasst: So 09.10.11 11:50
Ach so, doch, die können ja auch rein, die gehören ja dazu, auch wenn sie nicht aus der DLL stammen. Die Kapselung in einer Klasse dient aber auch der Zusammenfassung der Funktionen, deshalb macht es Sinn alles reinzupacken.
(Denn theoretisch würde sich das auch ohne eigene Klasse machen lassen, aber nicht so schön.)
|
| |
|
|
LittleBen 
      
Beiträge: 166
Win 7, Mac OS
Delphi 7
|
Verfasst: So 09.10.11 13:25
Puuuuh...Fertig! Habe nun alles in der Unit wie beschrieben verändert.
Das kompilieren funktionier auch wunderbar. Nur beim gebrauch hakt es noch. So versuche ichs im Moment:
Wenn ich das so mache, gibt die Fehlermedlung "The SQLite library was not loaded before calling SQLite3_Open".
Wie muss ich die Procedure dann aufrufen?
|
| |
|
|
jaenicke
      
Beiträge: 15833
Erhaltene Danke: 737
XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
|
Verfasst: So 09.10.11 13:56
Erstens hast du vergessen auch die anderen Funktionen in LoadDLL zu laden und zweitens habe ich gerade nochmal ins Original geschaut, die Funktionsnamen in der DLL sind ja kleingeschrieben, also muss das auch so heißen. Außerdem hatte ich vergessen Result nochmal ggf. zu korrigieren. Aber den Rückghabewert von LoadDLL hast du ja in deinem Quelltext ohnehin weggeworfen und nicht geprüft. // EDIT:
Nebenbei würde ich PAnsiChar überall durch AnsiString ersetzen in den Aufrufen von außen. Dann kannst du das immer an die Original-DLL-Funktion per Cast weitergeben, aber nach außen sind es normale Delphi-AnsiStrings. Das macht den Aufruf einfacher, deshalb hatte ich das auch so gemacht im Beispiel.
|
| |
|
|
LittleBen 
      
Beiträge: 166
Win 7, Mac OS
Delphi 7
|
Verfasst: So 09.10.11 14:31
Oke, habe ich nun auch erledigt:
Jetzt gibt die Funktion LoadDll false zurück. Unter anderem ist FSQLite3_GetTable nicht Assigned. Doch wenn ich es einfach mal so lasse: Dann dürfte doch nicht schon wieder ""The SQLite library was not loaded before calling SQLite3_Open" kommen, da SQLite3_Open doch in der Funktion drin ist
EDIT: Es heißt ja sqlite_get_table . Werde es gleich korriegieren!
EDIT: ES FUNKTIONIEEEEERRRT!!! War einfach nur zu doof! VIELE, VIELEN, VIELEN DANK Jaenicke! Bist ein Schatz! 
|
| |
|
|
|