Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ein DWORD mit einem Array of Char füllen? (https://www.delphipraxis.net/8344-ein-dword-mit-einem-array-char-fuellen.html)

Assarbad 2. Sep 2003 21:05

Re: Ein DWORD mit einem Array of Char füllen?
 
Wenn du undokumentierte Strukturen untersuchst ist das schon wichtig.

Stichwort BIG-ENDIAN und LITTLE-ENDIAN ;)

Nun, wozu man Unions und das "absolute" Statement gebrauchen kann, ist ja gut sichtbar. Weiteres ist denkbar ... aber sobald du es erstmal angewandt hast, werden sich dir diese anderen Einsatzmöglichkeiten schon erschließen, glaube mir ;)

Snoop007 2. Sep 2003 21:57

Re: Ein DWORD mit einem Array of Char füllen?
 
Assarbad, hast du paar links oder ähnliches
ich hab davon noch nie gehört ich kann mir auch nichts darunter vorstellen

Assarbad 2. Sep 2003 22:24

Re: Ein DWORD mit einem Array of Char füllen?
 
Hier ein Link:

http://www3.informatik.tu-muenchen.d...big_endian.pdf

Snoop007 2. Sep 2003 22:37

Re: Ein DWORD mit einem Array of Char füllen?
 
danke !

negaH 3. Sep 2003 00:19

Re: Ein DWORD mit einem Array of Char füllen?
 
Tja bei all den korrekten Lösungen will ich hier noch eine draufsetzen.

Delphi-Quellcode:

function Swap(Value: DWord): DWord;
asm
   BSWAP EAX
end;

var
  UserName: array[0..3] of Char;
  ID: DWord; absolute UserName;
begin
  UserName := '1234';
  ShowMessage( IntToHEX(Swap(ID), 8) );
end;
Gruß Hagen

negaH 3. Sep 2003 00:22

Re: Ein DWORD mit einem Array of Char füllen?
 
Shit, Asserbad hat's ja schon gepostet, sehe ich erst jetzt. (Hey Brille wo steckst du schon wieder ! mach dich her ich sehe nichts :))

Gruß Hagen

Assarbad 3. Sep 2003 09:29

Re: Ein DWORD mit einem Array of Char füllen?
 
Fehlt nur noch eine Erklärung ;) (warum du swappst) ;)

Weil Snoop nach einem Beispiel gefragt hat:

Ein ganz praktisches Beispiel sind die Signaturen im EXE-Header und im PE-Header. In Delphi findet man die meist als Konstanten wieder. Und da zB im PE-Header der "String" so aussieht 'PE'#0#0 also die Buchstaben P und E gefolgt von zweimal dem Zeichen 0, ist esmöglich dies als Hexadezimalwert zu schreiben. Nur da sieht es komplett anders aus:
IMAGE_NT_SIGNATURE = $00004550; // PE00

#0#0 kommen zuerst ;) ... und dann folgen E und P ... auf der Festplatte ist es beispielsweise genau andersherum abgespeichert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz