Hi Uwe Raabe
Zitat:
Das habe ich so nicht gesagt! Es muss dann schon geklärt werden, wer da dann was frei gibt.
Hmm... Und wie wird, bzw. kann dies geklärt werden? Indem der Compiler darüber informiert wird, welche der Variablen zu was gehört?
Genau das hat aber meine Frage veranlasst.
Zur Erinnerung: Meine bisherige Prozedur gibt die Liste direkt aus, ohne sie in einem Feld zwischenzuspeichern:
Delphi-Quellcode:
procedure TSQLiteTestMain.DoPathListEvent(Sender: TObject;
const FOrdner: String; const FPathlist: TStringList);
begin
Self.EdiFolder.Clear;
Self.EdiFolder.Text := FOrdner;
Self.LBxPathlist.Clear;
Self.LBxPathlist.Items.AddStrings(FPathlist);
end;
Stattdessen soll nun der übergebene KonstantenParameter FPathlist an das private Feld TSQLiteTestMain.FPathlist übergeben werden. Das würde nach meinen bisherigen Vorstellungen etwa so ausehen:
Delphi-Quellcode:
procedure TSQLiteTestMain.DoPathListEvent(Sender: TObject;
const FOrdner: String; const FPathlist: TStringList);
begin
FPathlist.AddStrings(FPathlist);
end;
Und genau das dürfte unmöglich sein. Es sei denn...:
Delphi-Quellcode:
procedure TSQLiteTestMain.DoPathListEvent(Sender: TObject;
const FOrdner: String; const FPathlist: TStringList);
begin
Self.FPathlist.AddStrings(PathFinderFrame.FPathlist);
end;
Allerdings müsste so auch der Eventtyp angepasst werden: Statt
TPathListEvent = procedure(Sender:TObject; const FOrdner: String; const FPathlist: TStringList) of Object;
müsste dies heissen:
TPathListEvent = procedure(Sender:TObject; const FOrdner: String; const PathFinderFrame.FPathlist: TStringList) of Object;
Allerdings - ob sowas überhaupt möglich ist, ist mir nicht bekannt; ich denke eher nicht.
Wobei dann tatsächlich mein erster ansatz übrig bliebe:
Delphi-Quellcode:
procedure TPathFinderFrame.FileSearcher1ExecuteComplete(Sender: TObject);
var LPathlist: TStringlist; LOrdner: String;
begin
if Assigned(FCurrentNode) then
FCurrentNode.Expand(false);
if Assigned(FOnPathListEvent) then
begin
LPathList := TStringlist.Create;
try
LPathList.AddStrings(FPathlist);
LOrdner := FOrdner;
FOnPathListEvent(Sender, FOrdner, LPathlist);
finally
LPathList.Free;
end;
end;
end;
und in der Mainform:
Delphi-Quellcode:
procedure TSQLiteTestMain.DoPathListEvent(Sender: TObject;
const FOrdner: String; const LPathlist: TStringList);
begin
FPathlist.AddStrings(LPathlist);
end;
Gruss
Delbor