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/)
-   -   Daten-String in Array of Byte einlesen (https://www.delphipraxis.net/201588-daten-string-array-byte-einlesen.html)

DeddyH 5. Aug 2019 10:02

AW: Daten-String in Array of Byte einlesen
 
Nur dass ich das richtig verstanden habe, aus dem String '12450A' soll ein Array of Byte mit dem Inhalt (18, 69, 10) werden, stimmt das (ich weiß, Deine Strings sind länger, aber ich war zu faul)?

Redeemer 5. Aug 2019 10:35

AW: Daten-String in Array of Byte einlesen
 
Wenn du den Stream von Hex entschlüsseln sollst: StrToInt('xA3') als Ansatz.

Wenn du den Stream unverändert ausgeben möchtest: Delphi-Referenz durchsuchenTStringStream oder Delphi-Referenz durchsuchenTBytesStream. Die haben ein array of Byte als Eigenschaft (Bytes glaube ich).

Der schöne Günther 5. Aug 2019 10:51

AW: Daten-String in Array of Byte einlesen
 
TFile.ReadAllBytes(..) 😶

Schokohase 5. Aug 2019 11:02

AW: Daten-String in Array of Byte einlesen
 
Also wenn du diesen String (mit Hex-Werten) in Bytes umwandeln möchtest, dann geht das so
Delphi-Quellcode:
function DecodeHexStringToBytes(const AHexString: string): TBytes;
var
  byteIdx: Integer;
  Len: Integer;
begin
  Len := AHexString.Length;
  if AHexString.Length mod 2 <> 0 then
    raise EArgumentException.Create('AHexString must contain even number of chars');

  SetLength(Result, AHexString.Length div 2);
  for byteIdx := 0 to AHexString.Length div 2 - 1 do
  begin
    Result[byteIdx] := Byte.Parse('$' + AHexString.Substring(byteIdx * 2, 2));
  end;
end;
Hier werden immer zwei Hexadezimal-Ziffern genommen und davon der Dezimal-Wert berechnet und dieser in dem Byte-Array gespeichert.

BTW Dein Beispiel-String aus dem ersten Post beinhaltet 74 Zeichen und das ergibt dann 37 Bytes.

DonPedroFo 5. Aug 2019 11:48

AW: Daten-String in Array of Byte einlesen
 
@DeddyH: ja so sollte es am ende aussehen

@Günther: Tfile.ReadAllBytes(...) schreib ich dann in den Klammern den Pfad, in dem das File liegt?

@Schockohase: Danke für den Code, ich probier ihn mal aus.

Der schöne Günther 5. Aug 2019 12:10

AW: Daten-String in Array of Byte einlesen
 
Schaust du Doku

peterbelow 5. Aug 2019 12:26

AW: Daten-String in Array of Byte einlesen
 
Zitat:

Zitat von DonPedroFo (Beitrag 1439433)
Hallo,
ich hoffe ich drück mich richtig aus und verwechsel keine Fachbegriffe.

Ich habe die Aufgabe, aus einer Text Datei mehrere Daten-Strings in ein Array of Byte "einzulesen"

ein "Datenstring" besteht aus 64 Byte und sieht z.b. folgender maßen aus: 12450ABF43ED234DFAB39104365FFF221943AABEE04365FFF2 21943AABEEBEE04365FFF221

ich hab schon folgendes probiert aber komme irgendwie auf keinen grünen Zweig:

Du (und bisher alle Antwortenden) machst das viel zu kompliziert. Delphi hat eine Funktion HexToBin (in system.classes), die exakt das macht, was Du haben willst.

Schokohase 5. Aug 2019 12:31

AW: Daten-String in Array of Byte einlesen
 
Zitat:

Zitat von peterbelow (Beitrag 1439494)
Du (und bisher alle Antwortenden) machst das viel zu kompliziert. Delphi hat eine Funktion HexToBin (in system.classes), die exakt das macht, was Du haben willst.

Ja, aber: Not invented here!

(Natürlich hast du Recht)


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

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz