Einzelnen Beitrag anzeigen

shmia

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

Re: Stringübergabe dauert sehr lange wer kann helfen ?

  Alt 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
  Mit Zitat antworten Zitat