Meinst du etwa so?
1. Ich entferne den Ressourcenschutzblock (Free) in der Funktion "Collect".
2. Ich gebe alle Arrayelemente in meinem Button OnClick nacheinander frei
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
x: TSubmissionArray;
i: integer;
begin
x := Collect;
showmessage(x[2].MD5);
// Array und seine Elemente werden ab hier nicht mehr gebraucht
for i := 0 to high(x) do
begin
x[i].Free;
end;
end;
Ist das sinnvoll? Eigentlich habe ich mir angewöhnt, überall einen Ressourcenschutzblock sofort einzubauen, nachdem man etwas mit Create() erstellt hat.
Die dieser Lösung jetzt dürfte man das Freigeben in der For-Schleife niemals vergessen, wenn man mit einem TSubmissionArray arbeitet, oder?
Gedankengang A:
Das TSubmissionArray "x" ist als Variable innerhalb von Button1Click deklartiert. Muss man die einzelnen Elemente überhaupt explizit freigeben? Oder wird dies automatisch gemacht, da der Array automatisch freigegeben wird (Ich glaube nicht, da er nur Referenzen enthält).
Gedankengang B:
Wäre es nicht besser, wenn ich in AddToArray() das TSubmission-Objekt irgendwie verdoppeln (einzigartig machen) könnte? Dann könnte ich meinen Ressourcenschutzblock behalten und müsste mich nicht um das Freigeben in einer For-Schleife kümmern. Nur wie macht man das?
Gruß
blackdrake