Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Memo hängt sich bei vielen Daten auf

  Alt 5. Feb 2010, 20:19
Schneller geht es aber, wenn man noch mit BeginUpdate arbeitet.

Ist zwar etwas aufwändiger, aber es lohnt sich.
Delphi-Quellcode:
Memo.Lines.BeginUpdate;
try
  while not <DS>.Eof do
  begin
      ...
      Memo.Lines.Add(...);
      ...
      inc(i);
      if i and 15 = 0 then
      begin
        Memo.Lines.EndUpdate;
        try
          Application.ProcessMessages;
        finally
          Memo.Lines.BeginUpdate;
        end;
      end;
      <DS>.Next;
  end;
finally
  Memo.Lines.EndUpdate;
end;
Wobei ich es seitabhängiger lieber hab, da man ja nie weiß, wie schnell der PC ist und wie lange die ganze Verarbeitung dauert.
Delphi-Quellcode:
C := GetTickCount;
Memo.Lines.BeginUpdate;
try
  while not <DS>.Eof do
  begin
      ...
      Memo.Lines.Add(...);
      ...
      if GetTickCount - C > 150 then // alle 150 ms
      begin
        Memo.Lines.EndUpdate;
        try
          Application.ProcessMessages;
        finally
          Memo.Lines.BeginUpdate;
        end;
        C := GetTickCount;
      end;
      <DS>.Next;
  end;
finally
  Memo.Lines.EndUpdate;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat