Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   sizeof(Integer) auf 64 bit systemen (https://www.delphipraxis.net/111494-sizeof-integer-auf-64-bit-systemen.html)

Arnulf 4. Apr 2008 11:02


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

mkinzler 4. Apr 2008 11:06

Re: sizeof(Integer) auf 64 bit systemen
 
Gar nicht. erst bei einem 64Bit-Kompiler

himitsu 24. Apr 2008 14:33

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.

DMW 24. Apr 2008 15:56

Re: sizeof(Integer) auf 64 bit systemen
 
Zitat:

Zitat von Arnulf
die eigentliche frage ist, ändert sich die größe von integer wenn ich auf einem 64 bit system bin?

Nein. Mit hoher Wahrscheinlichkeit wird sie sich auch nicht ändern, wenn du für ein 64-Bit-System kompilierst (was ab Delphi Commodore möglich sein sollte); unter Win64 ist int immer noch 32 Bit groß.
Was sich mit Sicherheit ändert, ist die Größe von Zeigern. Überprüfe besser das.

himitsu 24. Apr 2008 18:51

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:

1234588 24. Apr 2008 19:01

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ß :)

Muetze1 24. Apr 2008 19:34

Re: sizeof(Integer) auf 64 bit systemen
 
Zitat:

Zitat von DMW
Mit hoher Wahrscheinlichkeit wird sie sich auch nicht ändern, wenn du für ein 64-Bit-System kompilierst (was ab Delphi Commodore möglich sein sollte)

Klar, denn Integer und Cardinal sind generische, wachsende Typen. Diese wachsen mit, LongInt und LongWord hingegen bleiben bei 32 Bit.

@allgemein:
Das würde ich gerne mal sehen:

Delphi-Quellcode:
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?
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...


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz