Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 4 bytes in ein Integer / Cardinal kopieren (https://www.delphipraxis.net/49587-4-bytes-ein-integer-cardinal-kopieren.html)

Jasmine 13. Jul 2005 11:59


4 bytes in ein Integer / Cardinal kopieren
 
Hallo liebe Delphi Freunde,

ich habe eine Frage :

Wenn ich 4 Bytes in eine Integer oder Cardinal Variable kopieren möchte,
wie geht dies am schnellstens ? Also die 4 bytes sollen zusammen ein 32 bit Integer ergeben.

Ich habe eine Lösung mit or und shl gefunden, die mir allerdings nicht sehr gefällt.
Gibt es nicht eine Copy Variante oder etwas ähnliches ?

Dankeeee.

Jasmine

:cat:

Olli 13. Jul 2005 12:02

Re: 4 bytes in ein Integer / Cardinal kopieren
 
4 Bytes woraus?

Angenommen es wäre ein record mit 4 einzelnen (Byte- oder Char-)Membern, dessen Typ TBla wäre, dann so:
Delphi-Quellcode:
var bla:TBla; card:Cardinal;
begin
  card := Cardinal(bla);
end;
Kommt drauf an. Bitte nochmal spezifizieren. Die Frage ist zu ungenau!

Edit: sorry, Syntaxfehler. Bin zur zeit auf C++ :wall: ... andere haben eben andere Drogen ... *g*

Noch'n Edit: Wenn es einzelne Bytes sind, dann ginge noch folgendes ...
Delphi-Quellcode:
var HoechstesByte, DrittesByte, ZweitesByte, NiedrigstesByte: Byte; card: Cardinal
begin
  card := Cardinal((HoechstesByte shl 24) or (DrittesByte shl 16) or (ZweitesByte shl 8) or NiedrigstesByte);
end;

marabu 13. Jul 2005 12:22

Re: 4 bytes in ein Integer / Cardinal kopieren
 
Um die Verwirrung zu komplettieren - hier noch eine umfangreiche Behandlung dieses Themas.

Grüße vom marabu

Jasmine 13. Jul 2005 12:48

Re: 4 bytes in ein Integer / Cardinal kopieren
 
Danke..... hat mir sehr geholfen :-D

Jasmine

:cat:

Sidorion 13. Jul 2005 14:44

Re: 4 bytes in ein Integer / Cardinal kopieren
 
Kannst auch ein Recordtyp deklarieren:
Delphi-Quellcode:
  TByteInt=Record
   Case Boolean Of
     False: (Int: Integer);
     True: (Byte0: Byte;
            Byte1: Byte;
            Byte2: Byte;
            Byte3: Byte);
  End;
Jetzt kannst Du eine Variable vom Typ TByteInt Deklarieren und da dann entweder auf MyVar.Int zugreifen und kriegst einen Integer oder mit MyVar.Byte0 .. MyVar.Byte3 auf die einzelnen Bytes.

Olli 13. Jul 2005 14:54

Re: 4 bytes in ein Integer / Cardinal kopieren
 
Zitat:

Zitat von Sidorion
Kannst auch ein Recordtyp deklarieren

Der war mehr als flüssig. Habe ich oben schon erwähnt und im Link von marabu findest du diesen Beitrag von Dax.


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