Ich habe mir eine
DLL geschrieben mit einigen Datenbankfunktionen und habe mit einer Procedure ein Problem bei der Übergabe.
Ich versuche eine TSringlist Variable von der
DLL an das aufrufende Programm zu übertragen.
Dabei kommt der Fehler "TWideStriblist kann nicht zu TStringlist zugewiesen werden"
Folgendermaßen sieht der Aufruf im Programm aus:
Delphi-Quellcode:
Procedure DBListTables(var Liste:TStringList);
external DllPath;
.
.
procedure TForm1.btnListTablesClick(Sender: TObject);
var
xListe:TStringList;
begin
lstTables.Clear; // ListBox löschen
xListe:=TStringList.Create;
DBListTables(xListe);
lstTables.Items:=xListe;
xListe.Free
end;
In der
DLL sieht es so aus:
Delphi-Quellcode:
Procedure ListTables(Var Liste: TStringList);
Var
i : Integer;
Begin
Liste.Clear;
Con1.GetTableNames(Liste, False);
i := 0;
Repeat
Begin
If (Pos('Cellinfo', Liste[i])) > 0 Then
Liste.Delete(i);
Inc(i);
End;
Until Liste.Count = i;
i := 0;
Repeat
Begin
Liste[i] := Copy(Liste[i], 1, Length(Liste[i]) - 4);
Inc(i);
End;
Until Liste.Count = i;
End;
Wenn beides in einem Programm eingebunden ist, dann funktioniert es.
Wenn ich die Procedure über die
DLL-Schnittstelle aufrufe, dann kommt beim Aufruf
DBListTables(xListe);
die Fehlermeldung.
Scheinbar gibt es Probleme mit der Übergabe von Stringlisten.
Kann mir dabei jemand helfen ?