![]() |
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:
-Typen, wo eigentlich
Dword
Delphi-Quellcode:
korrekt gewesen wäre.
Word
Hat sich in Delphi die Wortbreite verändert? Spontan hätte ich (vor allem im Kontext der Windows-Welt) doch gedacht, dass
Delphi-Quellcode:
schon immer 16 Bit waren (und sind),
Word
Delphi-Quellcode:
32 Bit.
Dword
Gleichzeitig könnte ich hiermit noch fragen, was eigentlich der Unterschied zwischen
Delphi-Quellcode:
und
UInt16
Delphi-Quellcode:
ist aber das wäre optional :o
Word
|
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. |
AW: War ein Delphi-Word immer gleich?
![]() |
AW: War ein Delphi-Word immer gleich?
UInt16 ist das gleiche wie Word.
Gruß K-H |
AW: War ein Delphi-Word immer gleich?
Alles klar. Dann ist das wohl eine Ungereimtheit hier im Quelltext...
|
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 |
AW: War ein Delphi-Word immer gleich?
Nein, es ist schon der Delphi-Typ
Delphi-Quellcode:
, kein eigener typedef-Typ.
Dword
|
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. |
AW: War ein Delphi-Word immer gleich?
Zitat:
|
AW: War ein Delphi-Word immer gleich?
Das hat was mit dem Datenmodell zu tun:
![]() Allen Bauer hat für Delphi das LLP64-Modell gewählt. |
AW: War ein Delphi-Word immer gleich?
Zitat:
|
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 |
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