Autor Beitrag
theFlash
Hält's aus hier
Beiträge: 13

Win XP

BeitragVerfasst: Mo 22.12.03 15:43 
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!!!

_________________
Greetz Daniel
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 10

Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
BeitragVerfasst: Mo 22.12.03 15:52 
Müsste mit Round gehen, kannst ja mal die Hilfe dazu anguggn...

ausblenden Delphi-Quelltext
1:
Integer := Round(Extended);					

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13

Win XP

BeitragVerfasst: 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.

_________________
Greetz Daniel
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.12.03 16:34 
Wie sieht denn dein Quellcode aus?
r0fel.xls
Hält's aus hier
Beiträge: 12

Win XP
D6
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13

Win XP

BeitragVerfasst: Mo 22.12.03 17:02 
Hier ist der Abschnitt, in dem der Fehler liegt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
    zwischen := StrToInt(bst);//bst ist eine Zahl, aber als String
    zwischen3 := zwischen;//zwischen ist ein Integer, zwischen3 ein extended
    zwischen4 := e;// zwischen4 ist ein extended, e ist ein integer

    zwischen5 := power(zwischen3,zwischen4);//zwischen5 ist ein extended
    rest := Round(zwischen5) mod n;//n ist ein integer, rest auch


In diesem Beispiel ist jetzt mal round da.

_________________
Greetz Daniel
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mo 22.12.03 17:23 
In welcher Zeile kommt der Fehler?
theFlash Threadstarter
Hält's aus hier
Beiträge: 13

Win XP

BeitragVerfasst: Mo 22.12.03 18:15 
In der letzten Zeile.
ausblenden 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.

_________________
Greetz Daniel
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: 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:
ausblenden Quelltext
1:
2:
3:
4:
ShortInt : -128 ... 127
SmallInt : -32768 ... 32767 [Standart Int]
LongInt : -2147483648 ... 2147483647
Int64 : -2^63 ... 2^63-1
theFlash Threadstarter
Hält's aus hier
Beiträge: 13

Win XP

BeitragVerfasst: 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:

ausblenden 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.

_________________
Greetz Daniel