Hi zusammen
Da man Pferde ja bekanntlich vom Kopf her aufzäumt, fang ich gleich mal damit an. Meinem Datenmodul habe ich ein Feld mit zugehörigem Setter, Getter und Property verpasst. In private:
FContentmastertables: TStringlist;
und
function GetContentmasterTables: TStringlist;
sowie schliesslich public:
property Contentmastertables: TStringlist read GetContentmasterTables;
Bei Programmstart greife ich ein erstes mal darauf zu:
Delphi-Quellcode:
procedure TServerInfoFrame.CatalogInformation;
var i, j: Integer; Catalog:
string;
LIndent :
String; CatNames: TStringlist;
begin
CatNames := TStringList.Create;
try
...
finally
CatNames.Free;
end;
LIndent := '
- ';
for i := 0
to LBxCatalogNames.Items.Count - 1
do
begin
...
Catalog := LBxCatalogNames.Items[i];
// CM_First.ProcedureReport.Add(LIndent + 'Catalog := '+ Catalog);
if Catalog = '
contentmasterdata'
then
begin
Memo1.Lines.Add('
*************');
Memo1.Lines.Add(Catalog);
Memo1.Lines.Add('
------------');
Memo1.Lines.AddStrings(FDMySQLDml.Contentmastertables);
// Löst offenbar die AV aus. Der GRund: Keine Rückgabe
...
Dies löst den Getter aus:
Delphi-Quellcode:
function TFDMySQLDml.GetContentmasterTables: TStringlist;
var SqlString : String; I: integer;
begin
SqlString := 'SHOW TABLES';
FDQueryMain.Open(SqlString);
FDQueryMain.First;
while not FDQueryMain.Eof do
begin
FContentmastertables.Add(FDQueryMain.Fields.Fields[0].AsString);
FDQueryMain.Next;
end;
Result.Clear;
Result := (FContentmastertables);
end;
Spätestens bei der Übrgabe an Result krachts...
Ich habe jetzt mindestens einen Tag hinter mir. Dabei habe ich mir unter anderem
dies und
das.
Ich habe auch schon versucht, mit TStrings zu arbeiten. Aber irgendwie komm ich da nicht ganz klar. So, wie ich das verstanden habe, kann ich zwar eine Variable als TStrings deklarieren, muss dieser dann aber einen TStrings-Nachkommen "mit Hand und Fuss" zuweisen, bevor ich irgendwas befüllen kann.
Da es sich bei der Funktion um einen Getter handelt, kann ich die Methode nicht einfach in eine Prozedur umwandeln.
Was mache ich falsch??
Gruss
Delbor