Entwickler-Ecke
Sonstiges (Delphi) - Extended To Integer
theFlash - Mo 22.12.03 15:43
Titel: Extended To Integer
Hi @ all!
Hat einer ne Idee, wie man Variablen vom Typ Extended in eine Variable vom Typ Integer umwandelt, oder besser gesagt, den Inhalt einer extended Variable in eine Integer Variable zu bekommen?
Vielen Dank für jede Hilfe!!!
Chatfix - Mo 22.12.03 15:52
Müsste mit Round gehen, kannst ja mal die Hilfe dazu anguggn...
Delphi-Quelltext
1:
| Integer := Round(Extended); |
Anonymous - Mo 22.12.03 15:52
extended ist ein Fließkommaformat und integer ein Ganzzahlformat, also musst du die Zahl runden. Das geht mit round und trunc.
theFlash - Mo 22.12.03 16:23
Danke für die schnellen Antworten!
Habe es jetzt schon mit Round, Floor, Ceil und Trunc probiert.
Jedes mal kommt ein Fehler : EInvalidOp - Ungültige Gleitkommaoperation.
Anonymous - Mo 22.12.03 16:34
Wie sieht denn dein Quellcode aus?
r0fel.xls - Mo 22.12.03 17:01
könnte es sein, dass du statt einem punk ein komma als trennzeichen hast ???
oder andersrum :roll:
... ich weiß nichmehr genau aber eins von beidem mag delphi beim umwandeln nicht
theFlash - Mo 22.12.03 17:02
Hier ist der Abschnitt, in dem der Fehler liegt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| zwischen := StrToInt(bst); zwischen3 := zwischen; zwischen4 := e; zwischen5 := power(zwischen3,zwischen4); rest := Round(zwischen5) mod n; |
In diesem Beispiel ist jetzt mal round da.
Anonymous - Mo 22.12.03 17:23
In welcher Zeile kommt der Fehler?
theFlash - Mo 22.12.03 18:15
In der letzten Zeile.
Delphi-Quelltext
1:
| rest := Round(zwischen5) mod n; |
Wie gesagt: EInvalidOp - Ungültige Gleitkommaoperation
Zusatzinfos: Die Zahl zwischen5 ist ziemlich groß, eigentlich sogar größer als Integer glaube ich.
BungeeBug - Mo 22.12.03 18:51
Hi,
das würde erklären das es nicht geht :) Deswegen auch die Exception das die Operation ungültig ist.
Jetzt müsstes du "nur" sicher stellen das das wirklich der Grund ist.
Zustatzinfo:
Quelltext
1: 2: 3: 4:
| ShortInt : -128 ... 127 SmallInt : -32768 ... 32767 [Standart Int] LongInt : -2147483648 ... 2147483647 Int64 : -2^63 ... 2^63-1 |
theFlash - Mo 22.12.03 20:28
Daran würd es wohl liegen. Und ich habe dan das Problem, dass ich ja auch noch den Modulo ausrechnen muss, dazu brauche ich eine Integer-Form, aber die sind alle zu klein, für meine Zahl, die dabei rauskommt.
Gibt es irgendeine Möglichkeit, den modulo aus einer extended oder real-Zahl auszurechnen ? Ich könnte das ja per Hand machen, indem ich ausprobiere, bei welchem faktor (z.B. j) die Zahl größer ist, und dann den Rest ausrechnen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| j := 0; repeat inc(j); rest:=zahl-(j*n); until n*(j+1)>zahl; |
Aber hier kommt kommt ein Fehler wegen den Datentypen, weil "zahl" eine extended ist und rest ein integer ist.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!