Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi War ein Delphi-Word immer gleich? (https://www.delphipraxis.net/174092-war-ein-delphi-word-immer-gleich.html)

Der schöne Günther 3. Apr 2013 10:17

Delphi-Version: XE2

War ein Delphi-Word immer gleich?
 
Hallo-

Dumme Frage, aber ich gehe lieber auf Nummer sicher: Ich habe einen über zehn Jahre alten Delphi-Quelltext und wundere mich über Verwendung von
Delphi-Quellcode:
Dword
-Typen, wo eigentlich
Delphi-Quellcode:
Word
korrekt gewesen wäre.

Hat sich in Delphi die Wortbreite verändert? Spontan hätte ich (vor allem im Kontext der Windows-Welt) doch gedacht, dass
Delphi-Quellcode:
Word
schon immer 16 Bit waren (und sind),
Delphi-Quellcode:
Dword
32 Bit.


Gleichzeitig könnte ich hiermit noch fragen, was eigentlich der Unterschied zwischen
Delphi-Quellcode:
UInt16
und
Delphi-Quellcode:
Word
ist aber das wäre optional :o

Popov 3. Apr 2013 10:54

AW: War ein Delphi-Word immer gleich?
 
Meiner Kenntnis nach ja, denn Byte = 8 Bit, Word = 16 Bit, DWord (DoubleWord, in Delphi LongWord) = 32 Bit.

Ich meine, DWORD wird auch von Windows verwendet, da kann es doch mal das und mal das sein.

Aber das ist nur meine persönliche Meinung. ICh besitze keine historischen Kenntnisse zu DWord.

Bernhard Geyer 3. Apr 2013 11:30

AW: War ein Delphi-Word immer gleich?
 
DWORD war, Ist und wird immer 4 Byte sein. Der Datentyp Integer ist früher mitgewachsen.

p80286 3. Apr 2013 11:41

AW: War ein Delphi-Word immer gleich?
 
UInt16 ist das gleiche wie Word.

Gruß
K-H

Der schöne Günther 3. Apr 2013 11:50

AW: War ein Delphi-Word immer gleich?
 
Alles klar. Dann ist das wohl eine Ungereimtheit hier im Quelltext...

p80286 3. Apr 2013 12:01

AW: War ein Delphi-Word immer gleich?
 
Wirf mal einen genauen Blick auf die Typ-Definitionen.
Es soll ja auch Programmierer geben, die nur mit Typen wie int8,int16,int32,intirgendwas.. arbeiten. Nicht zwangsläufig ist etwas was wie ein WORD aussieht auch wirklich ein WORD.

Gruß
K-H

Der schöne Günther 3. Apr 2013 12:08

AW: War ein Delphi-Word immer gleich?
 
Nein, es ist schon der Delphi-Typ
Delphi-Quellcode:
Dword
, kein eigener typedef-Typ.

Delphi-Laie 3. Apr 2013 18:09

AW: War ein Delphi-Word immer gleich?
 
Das Stichwort lautet: Generische und fundamentale Typen.

Generische sind "mitwachsend", so integer und cardinal. Andere sind fundamental und immer von gleicher Größe (zumindest bis heute). Daß ein Byte z.B. seit Computerurzeiten gleich groß ist, nämlich eben 8 Bit, dürfte hinlänglich bekannt sein.

Bernhard Geyer 3. Apr 2013 19:56

AW: War ein Delphi-Word immer gleich?
 
Zitat:

Zitat von Delphi-Laie (Beitrag 1209874)
Generische sind "mitwachsend", so integer und cardinal.

Integer wächst nicht mehr mit. Java/.NET/Delphi Win64 - Alle lassen glücklicherweise gleichsam integer bei 4 Byte.

Insider2004 3. Apr 2013 20:55

AW: War ein Delphi-Word immer gleich?
 
Das hat was mit dem Datenmodell zu tun:
http://en.wikipedia.org/wiki/64-bit_computing
Allen Bauer hat für Delphi das LLP64-Modell gewählt.

Bernhard Geyer 3. Apr 2013 23:32

AW: War ein Delphi-Word immer gleich?
 
Zitat:

Zitat von Insider2004 (Beitrag 1209900)
Allen Bauer hat für Delphi das LLP64-Modell gewählt.

Kluge Entscheidung. Man sollte nicht gegen das Modell entwickeln auf das man zu 99% eingesetzt wird.

kwhk 9. Apr 2013 19:14

AW: War ein Delphi-Word immer gleich?
 
Ich habe nachfolgend die Integer-Formate von Turbo-Pascal und Delphi 7 zusammengestellt.
WORD und BYTE haben kein Vorzeichen, alle 16 bzw. 8 Bits gehören zur Zahl.
Die anderen INT-Formate sind vorzeichenbehaftet, dabei ist das höchste Bit (ganz links) das Vorzeichen.
DWORD bei Delphi gibt es nur für ASM-Definitionen, bei C++ ist DWORD allerdings mit Longword identisch.

Delphi-Quellcode:
Integer-Typen Turbo-Pascal

Turbo Pascal stellt fünf vordefinierte
Integer- Typen mit unterschiedlichen
Wertebereichen zur Verfügung:

   Typ    !       Wertebreich     !  Größe
 ==========+========================#=========
  Shortint !       -128..127        !  8 Bit
  Integer !     -32768..32767      ! 16 Bit
  Longint !-2147483648..2147483647 ! 32 Bit
  Byte    !          0..255        !  8 Bit
  Word    !          0..65535      ! 16 Bit

Alle Integertypen sind ordinal.

Delphi 7

Generische Integer-Typen für 32-Bit-Implementationen von Delphi
Typ      Bereich                  Format
Integer  -2147483648..2147483647   32 Bit, mit Vorzeichen
Cardinal 0..4294967295             32 Bit, ohne Vorzeichen

Zu den fundamentalen Integer-Typen gehören Shortint, Smallint, Longint, Int64, Byte, Word und Longword.

Fundamentale Integer-Typen
Typ       Bereich                  Format
Shortint  -128..127                 8 Bit, mit Vorzeichen
Smallint  -32768..32767             16 Bit, mit Vorzeichen
Longint   -2147483648..2147483647   32 Bit, mit Vorzeichen
Int64      -2^63..2^63-1             64 Bit, mit Vorzeichen
Byte      0..255                    8 Bit, ohne Vorzeichen
Word      0..65535   16                Bit, ohne Vorzeichen
Longword  0..4294967295             32 Bit, ohne Vorzeichen


Vordefinierte Typensymbole in Delphi-ASM
Symbol  Typ
BYTE    1
WORD    2
DWORD   4
QWORD   8
TBYTE   10

Delphi-Laie 10. Apr 2013 00:21

AW: War ein Delphi-Word immer gleich?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang sind zwei simple Projektdateigruppen, die den Größenbereich aller mir bis dato bekannten Integertypen mit Delphi und Lazarus anzeigen. Man kann beim Laufen auch schön erkennen, bei welchem 2^x sie "umbrechen". Auch, ob sie vorzeichenbehaftet sind oder nicht, läßt sich mit der Multiplikation mit -1 ausprobieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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 by Thomas Breitkreuz