Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.064 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Warum ist das Löschen einer Zeile aus einer Memo so langsam?

  Alt 26. Mär 2013, 01:27
Vielleicht so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
   Memo1.Clear;
   Memo1.Lines.BeginUpdate;
   for i:=1 to 10000 do Memo1.Lines.Add('Test '+IntToStr(i));
   Memo1.Lines.EndUpdate;
end;

procedure TForm1.Button2Click(Sender: TObject);
const cr=#13; lf=#10;
var count:integer; p,p1:PChar;
begin
   if Memo1.Text='then exit;
   p:=PChar(Memo1.text);
   p1:=p;
   count:=0;
   repeat
      case p^ of
         cr : begin
                  inc(p);
                  if p^=lf then inc(p);
                  inc(count);
               end;
         lf : begin
                  inc(p);
                  inc(count);
               end;
         else inc(p);
      end;
   until (p^=#0) or (count=400);
   if p^=#0 then begin
      Memo1.Text:='';
   end else begin
      count:=(NativeInt(p)-NativeInt(p1)) div SizeOf(char)+1;
      Memo1.Text:=Copy(Memo1.Text, count,maxint);
   end;
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat