Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by DeddyH,
1. Mär 2010
Die Übergabe als const ist tatsächlich überflüssig, das hat ja auch niemand in Frage gestellt. Ich mache das ja auch nur deshalb, um gleich anhand der Parameter erkennen zu können, dass die Referenz unveränderlich ist. Das hat nichts mit Optimierung oder dergleichen zu tun, sondern mit dem besseren Verständnis ;)
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by DeddyH,
26. Feb 2010
procedure FillWithNumbers(const aList: TStrings);
var i: integer;
begin
aList.Clear;
for i := 0 to 100 do
aList.Add(Format('%d',));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by DeddyH,
26. Feb 2010
Um das noch weiter auszuführen: TStrings ist ja eine Klasse. Will man nun ein Objekt dieser Klasse in einer Funktion zurückgeben, muss sie auch innerhalb der Klasse Funktion instanziert werden. Da aber die Freigabe nicht innerhalb des Blocks (also der Funktion) erfolgen kann, in dem sie instanziert wurde (der Rückgabewert wäre ja sonst hinfällig), muss man sehr genau aufpassen, dass man sich kein...
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by DeddyH,
26. Feb 2010
Und damit hast Du Dir die Referenz der erzeugten Liste mit einer nichtexistenten überschrieben. Mach es doch wie vorgeschlagen: übergib die Liste als (const-)Parameter und alles wird gut :)
Da waren mir zu viele "und"s drin :mrgreen:
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by DeddyH,
26. Feb 2010
Das dürfte daran liegen, dass Result nirgends erzeugt wird. Aber wie bereits weiter oben gesagt sollte man das Objekt besser an die Routine übergeben, sonst fängt man sich schnell ein Speicherleck ein.
Forum: Neuen Beitrag zur Code-Library hinzufügen
Delphi
by DeddyH,
25. Feb 2010
Richtig. Ich selbst deklariere übergebene Objekte immer als const, damit ich mir nicht versehentlich "ins Knie schieße", indem ich die Referenz ändere.