closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

Compilerfehler int64



Lschreyer offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age:
Posts: 483
Registered: 02 / 2007
Private message
Subject: Compilerfehler int64  -  Posted: 13.01.2020 - 15:04   -  
Ich habe seinen sehr seltsamen Fehler erhalten:

Folgender Code:
Code


type
  KeyTransType = record 
                   keyval: int64; 
                   row, col: byte; 
                 end; 


const
KeyTransform : array[0..37] of KeyTransType = ((keyval: 1; row: 0; col: 0), 
                                                 (keyval: 2; row: 0; col: 0), 
                                                 (keyval: 4; row: 0; col: 0), 
                                                 (keyval: 8; row: 0; col: 0), 
                                                 (keyval: 16; row: 0; col: 0), 
                                                 (keyval: 32; row: 0; col: 0), 
                                                 (keyval: 64; row: 0; col: 0), 
                                                 (keyval: 128; row: 0; col: 0), 
                                                 (keyval: 256; row: 0; col: 0), 
                                                 (keyval: 512; row: 0; col: 0), 
                                                 (keyval: 1024; row: 0; col: 0), 
                                                 (keyval: 2048; row: 0; col: 0), 
                                                 (keyval: 4096; row: 0; col: 0), 
                                                 (keyval: 8192; row: 0; col: 0), 
                                                 (keyval: 16384; row: 0; col: 0), 
                                                 (keyval: 32768; row: 0; col: 0), 
                                                 (keyval: 65536; row: 0; col: 0), 
                                                 (keyval: 131072; row: 0; col: 0), 
                                                 (keyval: 262144; row: 0; col: 0), 
                                                 (keyval: 524288; row: 0; col: 0), 
                                                 (keyval: 1048576; row: 0; col: 0), 
                                                 (keyval: 2097152; row: 0; col: 0), 
                                                 (keyval: 4194304; row: 0; col: 0), 
                                                 (keyval: 8388608; row: 0; col: 0), 
                                                 (keyval: 16777216; row: 0; col: 0), 
                                                 (keyval: 33554432; row: 0; col: 0), 
                                                 (keyval: 67108864; row: 0; col: 0), 
                                                 (keyval: 134217728; row: 0; col: 0), 
                                                 (keyval: 268435456; row: 0; col: 0), 
                                                 (keyval: 536870912; row: 0; col: 0), 
                                                 (keyval: 1073741824; row: 0; col: 0),
                                                 (keyval: 2147483648; row: 0; col: 0),  <-----hier Fehler!
                                                 (keyval: 4294967296; row: 0; col: 0),
                                                 (keyval: 8589934592; row: 0; col: 0),
                                                 (keyval: 17179869184; row: 0; col: 0),
                                                 (keyval: 34359738368; row: 0; col: 0), 
                                                 (keyval: 68719476736; row: 0; col: 0), 
                                                 (keyval: 137438953472; row: 0; col: 0)
                                                 ); 





Ich erhalte da ein "Type Mismatch! Int64 expected"

wenn ich die Zeile aus dem Array entferne uns die durch eine der späteren ersetze läuft es durch!
Die Zahl scheint also nicht zu groß zu sein, ist sie für int64 auch nicht, und auch größere werden akzeptiert.


Witzig ist, wenn ich die Zahl 2147483648 nur um 1 verringere läuft es durch.
Bei den Zahlen zwischen 2147483648 und 4294967295 gibt es den Fehler

2147483648 ist die zahl die sich ergibt wenn man nur Bit 31 in einem INT64 auf "1" setzt.
4294967295 ist die Zahl die sich ergibt wenn man die Bits 0..31 eines INT64 auf "1" setzt



Wie umgehe ich das?

Louis
This post has been edited 1-times. Last edit: 13.01.2020 - 15:13 by Lschreyer.
go down go up
Harry offline
PowerUser
Avatar
Gender: male
Location: GERMANY  zwischen Augsburg und Ulm
Age: 54
Posts: 1576
Registered: 03 / 2003
Private message
Subject: Re: Compilerfehler int64  -  Posted: 13.01.2020 - 16:24   -  
Schreibs mal binär rein: %0000000000000000000000000000000001000000000000000000000000000000;

..... ich hoff, daß ich mich nicht verzählt hab ;)

Kann man das nicht einfach
(2147483648, 0, 0),
schreiben?

Harry
Elektronik arbeitet mit Rauch - wenn man den Rauch raus läßt, funktioniert es nicht mehr.
Electronics works with smoke - if you let the smoke out, it works no longer.
This post has been edited 1-times. Last edit: 13.01.2020 - 16:26 by Harry.
go down go up
Lschreyer offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age:
Posts: 483
Registered: 02 / 2007
Private message
Subject: Re: Compilerfehler int64  -  Posted: 13.01.2020 - 16:53   -  
Nein, da es ein Record ist muss man es so schreiben. Habe ich auch so heute gelernt :-)
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 19.01.2020 - 17:54