Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "0x0008" Was für ein Typ??? (https://www.delphipraxis.net/52538-0x0008-fuer-ein-typ.html)

dadu 30. Aug 2005 17:09


"0x0008" Was für ein Typ???
 
Hallo Leute!

Ich lese aus einer Datei 4 Byte aus. Dokumentiert ist, dass diese 4 Byte aus einer OR-Kombination von 0x0001,0x0002,0x0004,0x0008 bestehen.

Was ist 0x***** für ein Typ bei Delphi, müsste ja 4 Byte groß sein??

thx

Bernhard Geyer 30. Aug 2005 17:10

Re: "0x0008" Was für ein Typ???
 
Unsigned: z.B. DWORD
Signed: z.B. Integer

In Delphi-Code schreibt man aber $0008 z.B. für 0x0008 in C.

alcaeus 30. Aug 2005 17:11

Re: "0x0008" Was für ein Typ???
 
Moin dadu,

0x**** ist die hexadezimale Notation in C, C++ usw. In Delphi waere das eine 2 Byte lange Variable.
Die Notation fuer deine Werte in Delphi waere uebrigens
Delphi-Quellcode:
$01, $02, $04, $08

dadu 30. Aug 2005 17:13

Re: "0x0008" Was für ein Typ???
 
Danke, ihr ward ja echt flott!

tigerman33 31. Aug 2005 09:42

Re: "0x0008" Was für ein Typ???
 
Diese Schreibweise hab ich nie kapiert. Was 0008 ist mir ja noch geläufig, aber was soll die Zahl davor? Also die 0?

Bernhard Geyer 31. Aug 2005 09:46

Re: "0x0008" Was für ein Typ???
 
Zitat:

Zitat von tigerman33
Diese Schreibweise hab ich nie kapiert. Was 0008 ist mir ja noch geläufig, aber was soll die Zahl davor? Also die 0?

0x ist der Kenner für Hexadezimale Darstellung. x allein sagt gar nichts aus.

Robert Marquardt 31. Aug 2005 09:53

Re: "0x0008" Was für ein Typ???
 
Eine vorlaufende Null ist in C die Schreibweise fuer eine Oktalzahl. 017 ist also dezimal 15.
Das stammt noch aus der Zeit als die Rechner Schalter aussen hatten. Diese waren in Dreiergruppen fuer die binaere Eingabe von Oktalziffern gedacht.
Bei dem originalen K&R C waren sogar die Oktalziffern 8 und 9 erlaubt (09 = 011 = 9 dezimal). Das hat man dann bei ANSI C beseitigt.
Damit man Hexzahlen benutzen kann musste eine neue Schreibweise eingefuehrt werden. Es wurde das x bzw. X hinzugefuegt.

Der Grund ist ein besonders einfacher Parser. Kommt eine Ziffer so beginnt eine Zahl. Ist es eine 0 so beginnt eine Oktalzahl, sonst eine Dezimalzahl. Kommt dann ein x so ist es eine Hexzahl.

Alles in allem wurde hier einfach eine Funktion zum Parsen einer Dezimalzahl zweimal moeglichst primitiv erweitert und das Resultat als zur Sprache gehoerig erklaert.

tigerman33 31. Aug 2005 09:56

Re: "0x0008" Was für ein Typ???
 
Danke, das hab ich begriffen. Flickschusterei und Notlösung also. Sympathisch :wink:

Olli 31. Aug 2005 09:58

Re: "0x0008" Was für ein Typ???
 
*Semppf-ranschaufel* ... also ich würde, wenn nicht mehr als 2 Byte nötig sind, den Typ Word empfehlen. Ansonsten darf es, wie im 2ten Beitrag geschrieben, auch gern ein DWORD (Double Word = 4 Byte) sein. Diese beiden Typen sind vorzeichenlos.

Was meinst du mit Flickschusterei?

Robert Marquardt 31. Aug 2005 10:08

Re: "0x0008" Was für ein Typ???
 
Flickschusterei war der erste C Compiler von K&R. Erst spaeter wurde C zur Sprache erklaert und normiert.
Damals war C aber noch als bequemer Assembler gedacht und die Programmierer waren an so krudes Zeug noch gewoehnt.
Die formale Definition von Sprachen sprich Compilerbau war ja noch gar nicht richtig erfunden. Selbst bei ADA haben sie es noch nicht korrekt hingekriegt.
Selbst heute sind neue Sprachen selten von vorneherein ueber Grammatiken definiert, sondern erst gewachsen und dann formalisiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.
Seite 1 von 2  1 2      

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