Compilerfehler int64

Lschreyer
Schreiberling
Avatar
Geschlecht: keine Angabe
Beiträge: 527
Dabei seit: 02 / 2007
Betreff:

Compilerfehler int64

 · 
Gepostet: 13.01.2020 - 15:04 Uhr  ·  #1
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
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Compilerfehler int64

 · 
Gepostet: 13.01.2020 - 16:24 Uhr  ·  #2
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
Lschreyer
Schreiberling
Avatar
Geschlecht: keine Angabe
Beiträge: 527
Dabei seit: 02 / 2007
Betreff:

Re: Compilerfehler int64

 · 
Gepostet: 13.01.2020 - 16:53 Uhr  ·  #3
Nein, da es ein Record ist muss man es so schreiben. Habe ich auch so heute gelernt :-)
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   65   79 · Page-Gen-Time: 0.029572s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI