Zitat von
Angel4585:
Result.Assign(Lagerliste)
Hallo, dann soltest du in einer
AV landen, da du Result nicht erzeugt hast.
Zitat von
Karstadt:
Aber Warum ich habe doch den Inhalt davor an ReSult übergeben..
Hast du eben nicht
. Durch Result := Lagerliste; hast du nicht den inhalt kopiert, sondern nur den zeiger verborgen, result und Lagerliste zeigen auf das gleiche. mit result.assign(lagerliste) würdest du den inhalt kopieren, bringt dir aber auch nichts. Das Rückgabe Ergebnis mußt du dann in der aufrufenenden Proc wieder freigeben. Ich persönlcih würde die Stringlist übergeben und nicht innerhalb der Func erzeugen.
Delphi-Quellcode:
Procedure Tf_hauptfenster.blablaLagerListe(Lagerliste: TStrings); (edit:
in Procedure geändert)
begin
Lagerliste.clear;
with dm.mqr_TEMP
do
begin
Close;
Sql.Clear;
sql.Add('
SELECT * FROM lager ORDER BY lg_bezeichnung ASC');
open;
While not Eof
do
begin
Lagerliste.Add(Fieldbyname('
lg_bezeichnung').asstring);
next;
end;
close;
end;
end;
Procedure Aufruf;
Var sl:tstings;
begin
sl:=tstringlist.create;
try
blablaLagerListe(sl);
machnochwasmit(sl);
finally
sl.free;
end;
Somit hast du das create und free der stringliste an einer Stelle und minimierst die Gefahr von Speicherlecks durhc das vergessen vom freigeben der Lagerliste.
Mfg Frank