procedure TForm1.Button1Click(Sender: TObject); begin con.LibraryLocation:=ExtractFilePath(ParamStr(0))+'sqlite3.dll'; con.Database:=daten.FileName; con.Connected:=true;
if daten.FileName=''then begin ShowMessage('Erst eine Datenbank auswählen!'); end else begin con.GetTableNames(myStringList); If myStringList.IndexOf('o2')=-1then ShowMessage('Tabelle nicht vorhanden') else ShowMessage('Tabelle vorhanden'); end; end;
moin... ich wollte einen Updater schreiben und dazu nachfragen ob es die Tabelle o2 schon gibt. Leider gibt er mir bei gettablenames die Fehlermeldung raus -> unit1.pas(66,36) Error: Wrong number of parameters specified for call to "GetTableNames"
mystringlist ist eine globale Variable vom Typ Array of String.... wieso will er dort eine Nummer haben?
Welche Datenbank-Komponenten verwendest du denn? Falls du TSQLite3Connection (Package SQLdb) verwendest, brauchst du eine String-Liste (z.B. TStringList) und kannst keinen Array verwenden.
MfG Socke Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Aphadias hat geschrieben:mystringlist ist eine globale Variable vom Typ Array of String.
Nicht dein Problem, aber: Warum machst du das global? Muss dein Programm aus jeder Situation absolut ohne Vorarbeit auf die Tabellennamen zugreifen können? Oder verwendest du das Array gar auch noch für andere Zwecke? Dann ist für Probleme vorgesorgt, denn aber einer gewissen Komplexität deines Programmes wirst du nicht mehr wissen, welche Daten aktuell in dem globalen Array stehen. Besser: deklariere MyStringList lokal in der Routine, in der du das Array brauchst. Und wenn MyStringList irgendwann nicht mehr ein Array sondern eine echte TStringList ist, kannst du die Daten da auch gleich wieder freigeben.
procedure TForm1.Button1Click(Sender: TObject); var myStringList:TStringList; begin con.LibraryLocation:=ExtractFilePath(ParamStr(0))+'sqlite3.dll'; con.Database:=daten.FileName; con.Connected:=true;
myStringList:=TStringList.Create;
if daten.FileName=''then begin ShowMessage('Erst eine Datenbank auswählen!'); end else begin con.GetTableNames('',myStringList); If myStringList.IndexOf('o2')=-1then ShowMessage('nicht vorhanden.'); else ShowMessage('vorhanden.');
end; end;
1. habe ich jetzt kein Array mehr genommen weil er dann einen anderen Fehler gezeigt hat und 2. habe ich bei gettablenames ein ' ' vor mystringlist gesetzt und es geht