Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
18. Jan 2010
Das liegt am ShortString, welcher in Delphi 1, bzw eigentlich schon in Pascal eingeführt wurde.
Feld 0 ist dort das Längenbyte und demnach fängt bei 1 der String an.
Dieses wurde dann später auf die "neuen" AnsiStrings übernommen,
nur daß es dort das Längen-Byte so nicht mehr gibt.
Umstellen läßt es sich jetzt nun auch nicht mehr ... sehr viele Programme würden dann ja nicht mehr laufen.
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
18. Jan 2010
Wenn du statt SizeOf(sTemp) ein Length(sTemp) nimmst, dann geht das auch.
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
18. Jan 2010
Ich kann mich täuchen, aber ich glaub es stimmt schon.
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
18. Jan 2010
Probier es einfach aus.
Var C: LongWord;
S: String;
i: Integer;
Begin
S := '';
C := GetTickCount;
For i := 1 to 50000000 do S := S + 'a';
Memo1.Lines.Add(IntToStr(GetTickCount - C));
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
18. Jan 2010
Wieso?
oder "Warum?", bzw. "Weshalb?"
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
18. Jan 2010
Zumindestens könnte man das Speichermanagement verbessern
und das ginge auch schon in den Vorgänger-Delphi-Versionen.
function StripString(const sTemp: String; const ValidChars: TSysCharSet): String;
var c : Char;
i : Integer;
begin
i := 0;
for c in sTemp do
if CharInSet(c, ValidChars) then Inc(i);
SetLength(Result, i);