Hmm, meinst du beim Löschen? Dann habe ich ja eine "Datenleiche", wenn ich einen weiteren Record hinzufüge.
Die Lösch-Procedure. Es geht übrigens um E-Mail-Konten, MKonten ist das Array of Record.
Delphi-Quellcode:
function KontoLoeschen(lID: Cardinal): Boolean;
var
I: Cardinal;
begin
result := false;
{ außerhalb }
If not (lID in [Low(MKonten)..High(MKonten)]) then
exit;
{ 0 Einträge }
result := (Length(MKonten) > 0);
if not result then
exit;
{ 1 Eintrag }
If (Length(MKonten) = 1) then
begin
result := (lID = 0);
if (Result) then
begin
FreeAndNil(MKonten[lID].ITimer);
SetLength(MKonten, 0);
exit;
end;
end;
{ 2+ Einträge }
FreeAndNil(MKonten[lID].ITimer);
{ -> verschieben und Rest eins hochrücken }
case (High(MKonten) - lID) of
0:
SetLength(MKonten, High(MKonten));
1:
begin
MKonten[Pred(High(MKonten))] := MKonten[High(MKonten)];
SetLength(Mkonten, Pred(High(Mkonten)));
end;
else
begin
for I := lID to (Length(MKonten) - 2) do
MKonten[I] := MKonten[Succ(I)];
SetLength(MKonten, Pred(Length(MKonten)));
end;
end;
result := true;
{ MenuItem suchen und löschen }
for I := Pred(MCForm.M_Check.Count) downto 0 do
if (MCForm.M_Check.Items[I].Tag = Succ(lID)) then
MCForm.M_Check.Delete(I);
end;