Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: noch was zu: "Nach 20/30 starts aus der IDE speicher voll"

  Alt 17. Okt 2023, 00:36
Du solltest aus dem var beim Parameter ein const machen, ...
Syntaktisch korrekt, aber ich würde dennoch empfehlen nicht CONS, sondern garnichts anzugeben.

* Ja, die Vairable selbst wird nicht geändert,
* aber der Inhalt schon.




Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage(getSL.Text);
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  var Temp := getSL.Text;
  showmessage(Temp.Text);
  Temp.Fee;
end;

// aber eigentlich
begin
  var Temp := getSL.Text;
  try
    showmessage(Temp.Text);
  finally
    Temp.Fee;
  end;
end;
Was erstellt wird, muß auch wieder freigegeben werden, denn das "Objekt" macht es nicht von selbst.

ODER
Delphi-Quellcode:
// FSL als Variable/Feld in der übergeordneten Klasse, also hier die TForm1

function TForm1.getSL: TStringList;
begin
  if not Assigned(FSL) then
    FSL := TStringList.Create; // oder im OnCreate UND im OnDestroy sowieso das FSL.Free;
  FSL.Clear;
  FSL.Add('haha');
  FSL.Add('hehe');
  FSL.Add('hihi');
  FSL.Add('hoho');
  FSL.Add('huhu');
  Result := FSL;
end;
* hier wird Extern nicht freigegeben
* gleichzeitig, bzw. kurz nacheinander aufgerufen, muß man bedenken, dass das Result des vorherigen Aufrufs sich auch mit verändert (weil selbes Objekt)

ODER z.B. irgendwas mit einem Interface
ODER function TForm1.getSL: TArray<string>;
ODER ...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (17. Okt 2023 um 00:42 Uhr)
  Mit Zitat antworten Zitat