Einzelnen Beitrag anzeigen

Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#3

Re: Probleme mit u.a. Timern in Array

  Alt 21. Apr 2009, 20:30
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;
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat