Zitat von
peschai:
Dein Problem ist bei StringReplace(tmp...
Du verwendest hier unnötigerweise PChars.
Ja und?
Zitat von
peschai:
StringReplace erwartet hier eine String uind keinen PChar.
Und da wird dann automatisch konvertiert. Vor dem Aufruf legt Delphi einen temporären String an und übergibt ihn.
Zitat von
peschai:
Desweiteren hast du ein Inc(tmp)!!! darin.
Damit überspringt er das Längenbyte und der PChar zeigt direkt auf das erste Zeichen. Das ist wohl auch genau so gewollt.
Zitat von
peschai:
Damit zeigts du nicht mehr auf das Längebyte an Position 0 eines Shortstring sondern auf das erste Zeichen.
Ich denke auch nicht, dass er vorne im String ein komisches Zeichen haben will.
Zitat von
peschai:
Du weist, daß ein PChar mit einer #0 beendet wird und derr Kommt wann ?
Vielleicht hatte er den ganzen Record vor der ersten Verwendung mit FillChar()/ZeroMemory() genullt? Bei normalen Strings (Sprich AnsiString) gibt es immer hinten ein #0. Ich weiss nun nicht, ob ein solches Verhalten auch bei ShortString?
Zitat von
peschai:
Also versuchs bitte mal nur mit Strings.
Dem würde ich aber grundsätzlich zustimmen.