Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
Re: Stringübergabe dauert sehr lange wer kann helfen ?
14. Dez 2005, 19:34
Problem
Delphi-Quellcode:
// es wird 20000 Mal an sNew angehängt
// bei jedem Anhängen muss ein neuer speicherblock allokiert werden
// und der gesamte bisherige String kopiert werden !!!
sNew := sNew + '' + Listbox1.Items.Strings[i];
Viel Schneller ist:
Delphi-Quellcode:
function CopyThatList(liste:TStrings; const delimstring: string): string;
var
i, L, dl : Integer;
size : integer;
P : PChar;
s : string;
begin
dl := Length(delimstring);
size := 0;
for i := 0 to liste.Count - 1 do
Inc(size, Length(liste[I]) + dl);
SetLength(result, size); // Speicher nur einmal reservieren !!
p := PChar(Result);
for i := 0 to liste.Count - 1 do
begin
s := liste[i];
L := Length(s);
if L <> 0 then
begin
System.Move(Pointer(S)^, P^, L);
Inc(P, L);
end;
if dl <> 0 then
begin
System.Move(delimstring[1], P^, dl);
Inc(P, dl);
end;
end;
end;
Andreas
|
|
Zitat
|