Hi@All
Ich code gerade viel mit records und arrays rum
Ich baue eine serveranwendung, die performant sein sollte.
Jetzt bin ich dort angelangt, wo ich
Array Items löschen muss.
Dies ist eine meiner Arraykombinationen:
Delphi-Quellcode:
type Tstatusinfo = array of array[0..8] of string;
type Tstatusinfoarr = array of Tstatusinfo;
var
statusinfos: Tstatusinfoarr;
Frage:
Wenn ich jetzt aus statusinfos ein item löschen will, benutze ich diese Funktion:
Delphi-Quellcode:
procedure DeleteStatusinfosItem(index:integer);
var
i,i2,c:integer;
temp: TStatusinfoarr;
begin
if index > length(Statusinfos) then exit;
c := 0;
setlength(temp,length(Statusinfos)-1);
for i := 0 to length(Statusinfos)-1 do begin
if i <> index then begin
temp[i] := Statusinfos[i];
inc(c);
end;
end;
setlength(Statusinfos,length(temp));
for i := 0 to length(temp)-1 do begin
Statusinfos[i] := temp[i];
end;
end;
Muss ich jetzt das statische
array auch noch irgendwie
freigeben ? oder merkt der speichermanager selbst, das auf dieses
array nichts mehr zeigt und das das dann automatisch freigegeben wird?
Frage2:
wenn ich statt dem statischen arrays ein packed reckord habe mit integern und strings mit längenangabe
ist das dann mit dem statischen
array freigeben gleichzusetzen?
Frage3:
was ist wenn ich ein
array of
array of
array[x..y] habe
und ein item im primären ersten
array lösche
dann müsste ich ja
setlength(unterarray,0) machen, damit das 2.
array auf länge 0 gesetzt wird und somit auch vom speichermanager aufgeräumt wird?
und das statische wird auch automatisch aufgeräumt?
Bitte alle 3 Fragen wenn möglich beantworten, da ich auf keinen fall ein Speicherleck haben will nacher
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!