![]() |
sizeof(Integer) auf 64 bit systemen
Hi
Momentan lese ich dirrekt aus einem shared memory. Da ich bitmaps lese stelle ich vor den raw daten die Auflösung und errechne mir dann die größe des shared memory und wieviel ich auslesen muss. die eigentliche frage ist, ändert sich die größe von integer wenn ich auf einem 64 bit system bin? grundsätzlch frage ich vorher sizeof(Integer) ab, aber ich weiß ja nicht ob der compiler das durch eine konstante ersetzt oder so.. Arnulf |
Re: sizeof(Integer) auf 64 bit systemen
Gar nicht. erst bei einem 64Bit-Kompiler
|
Re: sizeof(Integer) auf 64 bit systemen
SizeOf(Integer) wird vom Delphi-Kompiler (32-Bit) direkt in eine Konstante, mit dem Wert 4 umgewandelt.
(wird halt schon beim Kompilieren errechnet) und warum es nicht "geht": du erstellst ja ein 32-Bit Programm und das wird im 64-Bit-Windows sozusagen in einem 32-Bit-Modus ausgeführt ... für dein Programm ist es also so, als wenn es in einem 32-Bit-Windows liefe. |
Re: sizeof(Integer) auf 64 bit systemen
Zitat:
Was sich mit Sicherheit ändert, ist die Größe von Zeigern. Überprüfe besser das. |
Re: sizeof(Integer) auf 64 bit systemen
hmmmmm :gruebel:
Integer war im 16 Bit-Windows noch 16 Bit groß, jetzt im 32-Bit-Windows ist es 32 Bit klein, also hätt' ich doch gedacht, daß es bei einem 64 Bit-System dann 64 Bit groß ist? LongInt ist immer 32 Bit Und Integer war doch systemabhängig :stupid: |
Re: sizeof(Integer) auf 64 bit systemen
der Integer typ ist immer so groß wie die register des prozessors (ausschlaggebend ist auch dein os und dein compiler). LongInt ist grundsaetzlich 32 bit groß :)
|
Re: sizeof(Integer) auf 64 bit systemen
Zitat:
@allgemein: Das würde ich gerne mal sehen:
Delphi-Quellcode:
Damit wäre keine Adressberechnung jetzt schon programmierbar. Strukturen wären urplötzlich grösser, und das bei der gleichen EXE, nur auf einem anderen System. Vor allem die Konstanten können auf einmal grössere Werte aufnehmen, nur wenn du auf einem 32 Bit OS programmierst, haste Pech, deine Konstanten müssen klein bleiben...
type
PInt = ^Integer; var lInt: PInt; begin New(lInt); // also new alloziiert hier also mal 4 Byte und mal 8 Byte? Inc(lInt); // gleiches beim inkrementieren? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz