10. November 2010 00:04
ExcelBuf.SETRANGE("Row No.",Number);
IF ExcelBuf.FIND('-') THEN
REPEAT
CASE ExcelBuf."Column No." OF
1: EVALUATE(DebNo,ExcelBuf."Cell Value as Text");
2: EVALUATE(Preisgruppe,ExcelBuf."Cell Value as Text");
3: EVALUATE(Name,ExcelBuf."Cell Value as Text");
.....
10. November 2010 00:21
10. November 2010 09:51
Timo Lässer hat geschrieben:Hallo Lord_British,
ja, man kann sagen, dass EVALUATE das Gegenteil von FORMAT darstellt.
FORMAT wandelt (fast) jeden Datentyp in einen Text um,
jedoch
EVALUATE wandelt (sofern möglich) einen Text in den entsprechenden Zieldatentyp um.
Binary und BLOB lassen sich nicht per FORMAT in Text wandeln.
Übergibst du also einen Text, der ein gültiges Datumsformat darstellt an eine Date-Variable, dann wird Text in Date gewandelt,
übergibst du einen Text, der einen gültigen Dezimalwert darstellt an eine Dezimal-Variable, dann wird Text in Dezimal gewandelt,
übergibst du [...]
Übergibst du einen Text, der nicht in einem zum Zieldatentyp passenden Format geschrieben ist, liefert EVALUATE den Rückgabewert FALSE, daher sollte man diesen Befehl immer mit IF abfragen:
IF EVALUATE(Zielvariable, Quelltextvariable) THEN ...
In deinem Beispiel wird also der Text in
1. Code
2. Code
3. Text
gewandelt.
Meiner Meinung nach wären alle drei EVALUATE-Befehle in dem genannten Beispiel überflüssig, da Text und Code auch ohne EVALUATE gegenseitig zugewiesen werden können.
Text := Code;
funktioniert genauso gut wie
Code := Text;
Genauso würde auch die Zuweisung Option <-> Integer funktionieren:
Option := Integer;
funktioniert genauso wie
Integer := Option;