Ich habe seinen sehr seltsamen Fehler erhalten:
Folgender 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
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