![]() |
Hexadezimalstring in: #$String
Also ich habe hier einen Hexadezimal String, der sieht so aus:
Zitat:
Delphi-Quellcode:
Aber keine Ahnung wie das Funktionieren soll.
buffer_ := $0D#$14#$00#$00#$58#$C1#$57#$C1#$4A#$AF#$B2#$00#$19#$00#$00#$00#$13#$00#$00#$00;
Fsock.Send(buffer_[1],length(buffer_)); |
Re: Hexadezimalstring in: #$String
Delphi-Quellcode:
mfg
//Pseudocode:
for i = 1 to Length(s) step 2 do begin byte := StrToInt('#$' + s[i] + s[i+1]); AppendToArray(arr, byte); end; Socket.Send(arr); Christian |
Re: Hexadezimalstring in: #$String
Von welchem Typ muss das Array sein, und was bewirkt dieses Append?
|
Re: Hexadezimalstring in: #$String
Geh doch einfach den String durch, kopiere 2 Zeichen, füge da '#$' vorne an und häng das ans Ergebnis an.
|
Re: Hexadezimalstring in: #$String
So habe ich es gemacht, aber aus irgendeinem Grund hat das nicht funktioniert, wurde immer nur ein Byte versendet.
|
Re: Hexadezimalstring in: #$String
Da ich nicht genau weiß, was FSock ist, mutmaße ich mal:
Delphi-Quellcode:
Man beachte das @.
Fsock.Send(@buffer_[1],length(buffer_));
|
Re: Hexadezimalstring in: #$String
Zitat:
Zitat:
Zitat:
@DeddyH: Ich vermute, dass das @ a) nicht das Problem ist und b) hier falsch ist. Wenn ich das implementieren würde, dann würd ich einfach n var-Parameter nehmen. Damit braucht man das fehlerträchtige @ nicht. Du hast aber recht damit, dass es theoretisch auch n Pointer sein könnte und dann bräuchte man das @... mfg Christian |
Re: Hexadezimalstring in: #$String
Zitat:
Zitat:
|
Re: Hexadezimalstring in: #$String
Delphi-Quellcode:
so in der art würd ich ma sagen
var
buf: array of byte; i, c: Integer; s: String; begin s := '000d040507acf54d'; c := Length(s) div 2; SetLength(buf, c); for i := 1 to c do buf[i] := StrToInt('$'+s[i*2-1]+s[i*2]); socket.send(buf[1], SizeOf(Buf)); end; |
Re: Hexadezimalstring in: #$String
Hallo,
die Konvertierung kann auch recht einfach mit Bordmitteln durchgeführt werden:
Delphi-Quellcode:
Gruß Hawkeye
// uses Types, Classes
procedure Convert (const s: string; var Buffer: TByteDynArray); begin SetLength (Buffer, Length(s) div 2); SetLength (Buffer, HexToBin(PChar(LowerCase(s)), @Buffer[0], Length(Buffer))); end; // Anwendung: var Buffer : TByteDynArray; begin Convert ('0D14000058C157C14AAFB2001900000013000000', Buffer); Socket.Send (Buffer[0], Length(Buffer)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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 by Thomas Breitkreuz