ich bin hier neu und möchte gerne einen Bug posten.
ich habe zur Zeit ein Problem mit der Val() Funktion.
Wenn meiner Funktion den Wert '18,78EUR' übergebe, hängt die in einer Endlosscheife.
Das Programm arbeitet bis der Wert '18.78E' erreicht wird, dann nimmt die Variable j immer den Wert 7 an, der aber außerhalb des Strings liegt.
Beim 1. Durchlauf hat j auch schon den Wert 7 (statt 6) und es wird aus EUR ER. Beim 2. Durchlauf bleibt der Wert für j bei 7 und es wird aus ER E.
Hier die Funktion:
Code: Alles auswählen
Function CheckZahl(str1 : String):String;
var
i,j : Integer;
re : Double;
begin
str1:=StringReplace(str1,'.','',[rfReplaceAll]); // Löschen der Tausenderpunkte
str1:=StringReplace(str1,',','.',[rfReplaceAll]); // Aus dem Komma einen Punkt machen
Val(str1,re,j);
While j<>0 Do begin
Delete(str1,j,1); // Alle "Nichtzahlen" entfernen
Val(str1,re,j);
end;
Str(re:0:2,Str1); // Rekonvertierung in String
str1:=StringReplace(str1,'.',',',[rfReplaceAll]);
Result:=str1;
end;
Ich konnte keinen Programmierfehler bei mir entdecken, vielleicht kann ja jemand mal über den Codeschnipsel darüberschauen, oft hat man selbst ja Scheuklappen auf.
Der Hintergrund ist, dass ich aus pdf Dokumenten mittels xpdf (pdftotext) Texte erzeuge, die ich mit diesem Programm einlese und auswerte (Buchhaltungssoftware).
Danke für Eure Hilfe.
Gruß
Stephan