Seite 1 von 1

Replacestring im Modus 2 geht nicht mit FixStrings

Verfasst: 29.04.2008 21:35
von hjbremer
Diese Macke ist für mich ärgerlich

Betrifft nur Modus 2

Code: Alles auswählen

Structure Betrag
  ganz.s{12}
  zahl.s
EndStructure 

wert.Betrag

wert\ganz = "123,00"
ReplaceString(wert\ganz, ",", ".", 2) 
Debug wert\ganz

wert\ganz = ReplaceString(wert\ganz, ",", ".") 
Debug wert\ganz

ganzzahl.s{12} = "123,00"
ReplaceString(ganzzahl, ",", ".", 2) 
Debug ganzzahl

ganzzahl = ReplaceString(ganzzahl, ",", ".") 
Debug ganzzahl


Verfasst: 30.04.2008 02:40
von AND51
Möglicherweise ist das kein Bug.
Ich vermute mal, das liegt daran, dass Fixed String nicht null-terminiert sind (also mit Chr(0)).
Der Modus 2 ist aber auf eine Null angewiesen, denn der Modus 2 arbeitet intern anders als Modus 1.

Modus 2 kann nur deshalb eine sehr hohe Geschwinigkeit beim Ersetzen bieten, wenn Such- und Ersatzstring die gleiche Länge haben. Daher vermute ich, dass intern CompareMemoryString() und PeekS() benutzt werden; durch die fehlende Null-terminierung bei Fixed Strings wird einfach über das Stringende hinaus gelsen+geschrieben, was dann zu dem Bug führt.

Ist nur eine Vermutung meinersets.