[Gelöst] EVALUATE

31. August 2006 09:41

Hallo,
arbeitet der EVALUATE Befehl auch mit mit dem Datentyp DECIMAL verlässlich? In der Navision Hilfe habe ich nämlich nur folgendes gefunden: Data type: boolean, integer, option, date, time, text or code

Ich weiss, dass man unter NAV 4.xx zuverlässig DECIMAL konvertieren kann.

Um eine Antwort wäre ich sehr dankbar.

MfG
Zuletzt geändert von LittleSchorsch am 31. August 2006 21:14, insgesamt 1-mal geändert.

31. August 2006 10:51

Das ist sehr kritisch, weil die Dezimaltrenner nicht international einheitlich sind.
Bei einem DE-Sytem z.B. , wenn der Dezimaltrenner ein Komma ist
aText := '2,5656';
EVALUATE(aDec,aText);
aDec := aDec + 1 ; => ergibt aDec = 3,5656

aText := '2.5656'; // wird als 25 Tausend 656 interpretiert
EVALUATE(aDec,aText);
aDec := aDec + 1 ; => ergibt aDec = 25657

31. August 2006 11:05

Vielen Dank für die Antwort, jetzt stellt sich mir aber folgende Frage:
Wie sollte man dann am besten ein Textfeld einlesen, damit dieses auch "sauber" als Decimal importiert wird?

MfG

31. August 2006 12:43

Du musst vor dem Import wissen, wie die Dezimalwerte übergeben werden.
Kommen die Werte mit einem Dezimalpunkt, so solltest du als erstes alle Kommata und Leerzeichen entfernen (die dienen dann als Tausendertrennung), und anschließend konvertierst du den Punkt in ein Komma:
Code:
Txt2Dec(Text : Text[30]) : Decimal
Text := DELCHR(Text,', ');  // Leerzeichen beachten!
Text := CONVERTSTR(Text,'.',',');
EVALUATE(DummyDec,Text);
EXIT(DummyDec);
Das Ganze kann auch als Zweizeiler geschrieben werden:
Code:
Txt2Dec(Text : Text[30]) : Decimal
EVALUATE(DummyDec,CONVERTSTR(DELCHR(Text,', '),'.',','));
EXIT(DummyDec);
Zuletzt geändert von Timo Lässer am 31. August 2006 12:59, insgesamt 2-mal geändert.

31. August 2006 12:47

müsste in deinem Einzeiler nicht Value statt DummyTxt stehen?
ausserdem braucht er wohl die umgekehrte Funktion, also Txt2Dec....

31. August 2006 13:00

Sorry, du hast Recht. Da war ein Copy/Paste-Fehler von mir.
Oh mann, ich glaube, soviel Freizeit bekommt mir nicht. Wie gut, dass ich ab nächste Woche wieder arbeiten darf, da kommen die Gehirnzellen wieder in Fahrt.

Habe die Funktion(en) geändert.