![]() |
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: |
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:
Kommt drauf an. Bitte nochmal spezifizieren. Die Frage ist zu ungenau!
var bla:TBla; card:Cardinal;
begin card := Cardinal(bla); end; 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; |
Re: 4 bytes in ein Integer / Cardinal kopieren
Um die Verwirrung zu komplettieren - hier noch eine
![]() Grüße vom marabu |
Re: 4 bytes in ein Integer / Cardinal kopieren
Danke..... hat mir sehr geholfen :-D
Jasmine :cat: |
Re: 4 bytes in ein Integer / Cardinal kopieren
Kannst auch ein Recordtyp deklarieren:
Delphi-Quellcode:
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.
TByteInt=Record
Case Boolean Of False: (Int: Integer); True: (Byte0: Byte; Byte1: Byte; Byte2: Byte; Byte3: Byte); End; |
Re: 4 bytes in ein Integer / Cardinal kopieren
Zitat:
![]() |
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