Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Max. Wert von longint? (https://www.delphipraxis.net/58179-max-wert-von-longint.html)

Delphi Star 2. Dez 2005 13:46


Max. Wert von longint?
 
Wie hoch ist der Max. Wert von longint :?:

Luckie 2. Dez 2005 13:47

Re: Max. Wert von longint?
 
Die Frage ist jetzt nicht dein Ernst oder? :roll:

Steht in der Hilfe.

ManuMF 2. Dez 2005 13:51

Re: Max. Wert von longint?
 
Wie Luckie schon gesagt hat, Delphi-Referenz durchsuchenInteger oder Delphi-Referenz durchsuchenLongInt.

Aber was solls... ;-)
–2.147.483.648..2.147.483.647

Gruß,
ManuMF

Muetze1 2. Dez 2005 13:52

Re: Max. Wert von longint?
 
Delphi-Quellcode:
High(Integer)
, wenn du es im Code nutzen willst.

Khabarakh 2. Dez 2005 14:01

Re: Max. Wert von longint?
 
Zitat:

Zitat von Muetze1
Delphi-Quellcode:
High(Integer)
, wenn du es im Code nutzen willst.

Das könnte aber schon in wenigen Jahren nicht mehr stimmen :wink: .

Delphi-Referenz durchsuchenMaxLongint gäbe es auch noch.

ichbins 2. Dez 2005 14:25

Re: Max. Wert von longint?
 
vergebt mir, wenn ich jetzt sch*** schreibe, aber ich glaube die Größe eines Integers entspricht (noch) der Größe eines Longints, und zwar 32 Bit. Wenn dann allerdings (endlich) ein 64-Bit-Compiler für Delphi rauskommt, wird der Integer 64 Bit haben und der Longint nur noch 32.

Die Größe kannst du so berechnen: 2^(32-1) <-> -((2^(32-1))-1).

Die Größe einer Variable bekommst du auch mit sizeof(i);

folglich müsste der Code für den Range so lauten:

Delphi-Quellcode:
uses
  ..., math;

[...]
var
  i:integer;
begin
  maxwert:=power(2,(sizeof(i)*8-1));
  minwert:=-power(2,(sizeof(i)*8-1))+1;

RavenIV 2. Dez 2005 14:31

Re: Max. Wert von longint?
 
Zitat:

Zitat von ichbins
vergebt mir, wenn ich jetzt sch*** schreibe, aber ich glaube die Größe eines Integers entspricht (noch) der Größe eines Longints, und zwar 32 Bit. Wenn dann allerdings (endlich) ein 64-Bit-Compiler für Delphi rauskommt, wird der Integer 64 Bit haben und der Longint nur noch 32.

warum sollte ein LongInt kürzer als ein Integer sein? Wo ist da der Sinn?
Vermutlich wird der Integer bei 32 Bit bleiben und der LongInt wird 64 Bit werden.
Das schreibt ja quasi die Abwärtskompatibilität vor.

ichbins 2. Dez 2005 14:34

Re: Max. Wert von longint?
 
Ich hab so einen 500-Seiten-Wälzer, da glaube ich gelesen zu haben, dass ein Integer immer auf die CPU optimiert ist und wenn man eine Konstante größe will, einen longint nehmen soll weil der IMMER 32 Bit hat.

tommie-lie 2. Dez 2005 14:46

Re: Max. Wert von longint?
 
Zitat:

Zitat von RavenIV
warum sollte ein LongInt kürzer als ein Integer sein? Wo ist da der Sinn?

Weil LongInt historisch gewachsen ist und der tatsächliche vorzeichenlose, 32bittige Ganzzahltyp in DelphiLanguage ist. Integer und Cardinal sind lediglich aliases auf einen generischen Ganzzahltyp. Es würde Sinn machen, bei einem 64bit-Compiler, diese beiden Aliases auf 64bit-Typen umzumappen, also auf einen LongLongInt (Int64 haben die Borländer das Ding ja leider genannt).

Zitat:

Zitat von RavenIV
Vermutlich wird der Integer bei 32 Bit bleiben und der LongInt wird 64 Bit werden.

*DAS* wäre allerdings das dümmste, was Borland machen könnte. LongInt ist immerhin der tatsächliche Datentyp und Integer nur ein Alias. Die Abwärtskompatiblität schreibt nicht vor, daß Datentypen einfach ihre Größe ändern, wie du vorschlägst. Die Abwärtskompatibilität schreibt vor, daß ein LongInt das bleibt, was er per Definition seit rund 10 Compilergenerationen ist: ein vorzeichenloser 32bit-Ganzzahltyp.

himitsu 2. Dez 2005 14:46

Re: Max. Wert von longint?
 
Nein, Intger ist mit dem Compiler abgestimmt ... bei einem 32-Bit Compiler ist es ein LongInt (32-Bit), in Delphi 1 war es ein SmallInt (16-Bit) und in den 64-Bitversionen des Delphi-Compilers wird es dann ein LargeInt (64-Bit sein).

Aber der Compiler ist auf ein Betriebssystemabgestimmt, welches auf den Prozessor abgestimmt wurde, also hast du zumindestens nicht ganz unrecht.

CPU/FPU > Betriebssystem > Compiler > Datentypen

Khabarakh 2. Dez 2005 14:48

Re: Max. Wert von longint?
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von ichbins
vergebt mir, wenn ich jetzt sch*** schreibe, aber ich glaube die Größe eines Integers entspricht (noch) der Größe eines Longints, und zwar 32 Bit. Wenn dann allerdings (endlich) ein 64-Bit-Compiler für Delphi rauskommt, wird der Integer 64 Bit haben und der Longint nur noch 32.

warum sollte ein LongInt kürzer als ein Integer sein? Wo ist da der Sinn?
Vermutlich wird der Integer bei 32 Bit bleiben und der LongInt wird 64 Bit werden.
Das schreibt ja quasi die Abwärtskompatibilität vor.

Nope, es ist genau andersherum. Ein LongInt wird immer 32-Bit bleiben, Integer (und Cardinal) ist dagegen ein generischer Typ.
OH
Diese Typen sollten, wenn möglich, immer verwendet werden, da sie die optimale Ausführungsgeschwindigkeit für die zugrundeliegende CPU und das Betriebssystem gewährleisten.


Und bitte keine Power-Funktion für die Basis 2 benutzen, dafür gibt es Delphi-Referenz durchsuchenshl.

[edit]Wo bleibt der rote Kasten :gruebel: ? [/edit]

RavenIV 2. Dez 2005 15:00

Re: Max. Wert von longint?
 
OK, ich gebe mich geschlagen. Ihr habt mich überzeugt.
LongInt war und bleibt immer 32 Bit und Integer ist von der CPU abhängig.

himitsu 2. Dez 2005 16:45

Re: Max. Wert von longint?
 
Zitat:

Zitat von RavenIV
LongInt war und bleibt immer 32 Bit und Integer ist von der CPU abhängig.

Ich sags gern nochmal genauer ... Ineger ist vom Compiler abhängig, welcher auf ein Betriebssystem abgestimmt ist, welche für eine CPU entwickelt wurde ...

Muetze1 2. Dez 2005 17:50

Re: Max. Wert von longint?
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von Muetze1
Delphi-Quellcode:
High(Integer)
, wenn du es im Code nutzen willst.

Das könnte aber schon in wenigen Jahren nicht mehr stimmen :wink: .

Delphi-Referenz durchsuchenMaxLongint gäbe es auch noch.

Wieso? Meinste in Zukunft funktioniert die High() Funktion nicht mehr? Ansonsten rate mal wie die Konstante MaxInt definiert ist...

Khabarakh 2. Dez 2005 17:56

Re: Max. Wert von longint?
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von Muetze1
Delphi-Quellcode:
High(Integer)
, wenn du es im Code nutzen willst.

Das könnte aber schon in wenigen Jahren nicht mehr stimmen :wink: .

Delphi-Referenz durchsuchenMaxLongint gäbe es auch noch.

Wieso? Meinste in Zukunft funktioniert die High() Funktion nicht mehr?

Nein, aber dann ist MaxInt nicht mehr gleich MaxLongInt, nach dem der Fred-Author gefragt hat :mrgreen: .

Muetze1 2. Dez 2005 19:40

Re: Max. Wert von longint?
 
Aso, nun fällt mir mein fauxpas auch erst auf, es muss natürlich dann
Delphi-Quellcode:
High(LongInt)
heissen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 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