Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
3. Mär 2010
Besser als
S := S + irgendwas;
ist dann halt
//Insert(irgendwas, S, Length(S) + 1);
Insert(irgendwas, S, MaxInt);
Denn wenn Insert, bzw. der Speichermanager den internen Speicher hier "inplace", also ohne verschieben/umkopieren vergrößern kann, dann wird nur noch der anzuhängende String da reinkopiert und fertig.
Ich hab allerdings nicht nachgeschaut, ob Concat2 (_LStrCat, bzw....
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
3. Mär 2010
Du meintest wohl
// Str2
SetLength(Str2, 100000);
//FillChar(Str2, 100000 * SizeOf(Char), 0);
for i := 1 to 100000 do
Str2 := 'A';
Denn sonst ist die 2 noch langsamer, da sie schon mit einem größerem Ausgangsstring genau das Selbe (in Bezug auf die Schleife) macht.
Var P: PChar;
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
3. Mär 2010
Da SetLength den Speicher nicht initialisiert, sind alle neuen Zeichen undefiniert.
Wurde zufällig ein ein neuer/leerer Speicherbereich verwendet, dann stehen #0-en drin, ansonsten halt irgendwelche zufällig dort im Speicher rumliegende Byte-/Zeichenfolgen.