Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: Funktion kommt beim sortieren des Array durcheinander

  Alt 16. Feb 2012, 18:41
Die Art und Weise, wie du den Record kopierst ist "ungünstig".
Besser man vermeidet permanente Zuweisungen mit Assign:
Delphi-Quellcode:
procedure MoveInfoRecord(var src, dst:TInfo);
begin
  dst.Textinfo := src.Textinfo;
  dst.Bmp := src.bmp); // nur den Objektzeiger kopieren
  dst.Delete := src.Delete;
end;


procedure ClearArray;
var
  i, k: Integer;
begin
  for i := High(Info) downto 0 do
  begin
    if Info[i].Delete then
    begin
      // zuerst Bitmap freigeben
      Info[i].Bmp.Free;
      // der Platz i ist jetzt quasi ungültig

      // jetzt die gültigen Daten "runterschieben"
      for k := i to High(Info) - 1 do //Rest
      begin
        MoveInfoRecord(Info[k+1], Info[k]);
      end;
      // Array um 1 verkürzen
      SetLength(Info, Length(Info) - 1);
    end;
  end;
end;
Andreas
  Mit Zitat antworten Zitat