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')=-1 then
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')=-1 then
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