AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein sizeof(Integer) auf 64 bit systemen
Thema durchsuchen
Ansicht
Themen-Optionen

sizeof(Integer) auf 64 bit systemen

Ein Thema von Arnulf · begonnen am 4. Apr 2008 · letzter Beitrag vom 24. Apr 2008
Antwort Antwort
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

sizeof(Integer) auf 64 bit systemen

  Alt 4. Apr 2008, 11:02
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: sizeof(Integer) auf 64 bit systemen

  Alt 4. Apr 2008, 11:06
Gar nicht. erst bei einem 64Bit-Kompiler
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.121 Beiträge
 
Delphi 12 Athens
 
#3

Re: sizeof(Integer) auf 64 bit systemen

  Alt 24. Apr 2008, 14:33
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#4

Re: sizeof(Integer) auf 64 bit systemen

  Alt 24. Apr 2008, 15:56
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.
Moritz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.121 Beiträge
 
Delphi 12 Athens
 
#5

Re: sizeof(Integer) auf 64 bit systemen

  Alt 24. Apr 2008, 18:51
hmmmmm

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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#6

Re: sizeof(Integer) auf 64 bit systemen

  Alt 24. Apr 2008, 19:01
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ß :)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: sizeof(Integer) auf 64 bit systemen

  Alt 24. Apr 2008, 19:34
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...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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