Also zuallererst solltest du mit FileExists() überprüfen, ob die Datei existiert.
Klar, verstehe ich, und habe ich schon gemacht.
Wichtiger ist:
wie überprüfe ich ob sqldatenbank schon initializiert wurde ?
Ich habe mir einen eigenen Wrapper für die
DLL geschrieben und noch ein paar
DLL-Aufrufe hinzugefügt, die in der von dir verwendeten
Unit nicht existieren.
Hast du das irgendwo zur verfügung gestellt ?
Entweder weil es diese noch nicht gab als der Wrapper geschrieben wurde oder weil der Autor des Wrappers diese für nicht sinnvoll angesehen hat. In meinen Augen sind das aber sehr wichtige Funktionen wenn man tiefer in die Datenbank eingreifen will und nicht nur Daten einer Tabelle auslesen will.
Na gut, das auslesen würde mir so weit ausreichen. Zweck: ich werde alte routinen für .INI dateien ersetzen - die sind von andere schlecht programmiert und auch langsam.
Edit:
wenn ich in meiner Code "per Zufall" die Initialization auslasse, also
Delphi-Quellcode:
procedure databaseinit(filename: string);
begin
// sqdatabase := TSQLiteDatabase.Create(filename);
end;
dann bekomme ich auch mit test eine
Access Violation:
Delphi-Quellcode:
function dbquery(q:string):string;
var
T: TSQLiteTable;
begin
try
if Assigned(sqdatabase) then // <<<< geht leider nicht..
begin
t:=sqdatabase.GetTable(q);
// records ?
if t.Count>0 then
begin
Result:=t.FieldAsString(0);
end;
end
else
Result:='!!';
finally
t.free;
end;
end;
das ist was ich meine mit Fehlersuche / test.