Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String in Array of Byte (string ist schon ein hex Wert) (https://www.delphipraxis.net/155882-string-array-byte-string-ist-schon-ein-hex-wert.html)

dernordischegott 11. Nov 2010 14:12

Delphi-Version: 2007

String in Array of Byte (string ist schon ein hex Wert)
 
Hallo Gemeinde,

ich bin neu hier - aber werd gleich mal eine Frage stellen.

Ich habe ein Array
buff2 : array [0 .. GPRS_STUFF_BUFF] of Byte;

Dieses will ich füllen - ich benötige nur zwei Elemente:
Das erste wird hard gecoded:
buff2[0] := $06;

beim zweiten liegt das Problem - ich erhalte den hex-Wert als String. Also z.B. '93'.
Diese '93' sollen nun in buff2[1] geschrieben werden.

Was ist die Lösung dafür? Habe folgendes schon probiert, aber es erfolgt jedesmal ein Umwandlung, d.h. aus der 93 wird ein 5D, was jedoch einen falschen Wert darstellt (da ja 93 geschrieben werden sollen)

buff2[1] := Ord(strToIntDef(test_flag, 0)); // 5D
buff2[1] := StrToInt( test_flag ); // 5D

Also nochmal zusammenfassend
Array soll die Elemente 06 & 93 beinhalten


Vielen Dank

DeddyH 11. Nov 2010 14:21

AW: String in Array of Byte (string ist schon ein hex Wert)
 
Ein Byte ist eine Zahl (in Deinem Fall 93). Diese kann man dezimal darstellen oder hexadezimal (oder binär oder oktal usw.). Am Wert selbst ändert das aber nichts, der ist völlig korrekt.

dernordischegott 11. Nov 2010 14:53

AW: String in Array of Byte (string ist schon ein hex Wert)
 
Vielen Dank für die schnelle Antwort,

ganz so leicht scheint es aber nicht zu sein.
Wenn ich ein F9 als String bekomme muss ich es ja dem Element des Byte Arrays übergeben.

Gibt es da eine Funktion?
StrToInt( test_flag ); kann ich ja nicht nehmen, da er ja aus z.b. einer 80 eine 50 macht (sprich dez -> hex).

Kann man den String casten?

Vielen Dank

PS: bin noch nicht so lange in Delphi tätig - eher Anfänger

DeddyH 11. Nov 2010 14:59

AW: String in Array of Byte (string ist schon ein hex Wert)
 
Die Strings sind im Hexadezimal-Format? Dann müsste es AFAIK genügen, ein "$" davor zu schreiben, dann kann man mit StrToInt casten.

[edit] Beispiel:
Delphi-Quellcode:
const s = 'F9';
begin
  ShowMessage(IntToStr(StrToInt('$' + s)));
end;
[/edit]

dernordischegott 11. Nov 2010 19:17

AW: String in Array of Byte (string ist schon ein hex Wert)
 
Vielen Dank

werde das morgen früh @work direkt probieren.

liebe Grüße aus Erfurt

himitsu 11. Nov 2010 21:23

AW: String in Array of Byte (string ist schon ein hex Wert)
 
Oder Delphi-Referenz durchsuchenHexToBin

dernordischegott 12. Nov 2010 06:38

AW: String in Array of Byte (string ist schon ein hex Wert)
 
Guten Morgen,
danke für die Antworten

buff2[1] := IntToStr(StrToInt('$' + test_flag));

führt leider zu einem "Incompatible Types: Byte and String"
Werd mal den zweiten Tipp probieren.

Tschau

dernordischegott 12. Nov 2010 06:57

AW: String in Array of Byte (string ist schon ein hex Wert)
 
gelöst - so gehts:

buff2[1] := StrToInt('$' + test_flag);

weiss man wie es geht, denkt man "oh war ich doof" :cyclops::cyclops::cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr.

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