Registriert seit: 17. Nov 2005
Ort: Hamburg
1.064 Beiträge
Delphi XE2 Professional
|
AW: Warum ist das Löschen einer Zeile aus einer Memo so langsam?
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....
|