Bei der Übergabe eines Quad-Wertes an eine Prozedur die einen anderen Integer-Wert erwartet machen Quads (ebenfalls) Probleme.
So funktioniert die automatische Umwandlung in Integer-Werte auch hier nicht korrekt.
Die Umwandlung in Fließkomma-Werte funktioniert hingegen einwandfrei.
Anbei mal ein kleines Beispiel:
Code: Alles auswählen
Procedure.l LongProc(Type.s, Long.l)
Debug "Übergabewert: "+Str(Long)+" (Sollte 7 sein - Typ: "+Type+")"
EndProcedure
Byte.b = 7 : LongProc("Byte",Byte)
Word.w = 7 : LongProc("Word",Word)
Long.l = 7 : LongProc("Long",Long)
Quad.q = 7 : LongProc("Quad",Quad)
Float.f = 7 : LongProc("Float",Float)
Double.d = 7 : LongProc("Double",Double)
Quad = Long
Debug "" : Debug "Direkte Umwandlung von Quad nach Long ist ok. Ergebnis: "+Str(Quad)
@André:Übergabewert: 7 (Sollte 7 sein - Typ: Byte)
Übergabewert: 7 (Sollte 7 sein - Typ: Word)
Übergabewert: 7 (Sollte 7 sein - Typ: Long)
Übergabewert: 2147344384 (Sollte 7 sein - Typ: Quad)
Übergabewert: 7 (Sollte 7 sein - Typ: Float)
Übergabewert: 7 (Sollte 7 sein - Typ: Double)
Direkte Umwandlung von Quad nach Long ist ok. Ergebnis: 7
Ich hätte hier einen BeispielCode, bei dem die Umwandlung seltsamerweise bei einer Prozedur klappt, bei einer anderen nicht.
Wenn Fred also zufällig daran interesse hätte um das Problem zu lokalisieren, kann ich diesen gerne zur Verfügung stellen.
Greetz, PL.