![]() |
Re: Typenumwandlungen
Aus der Deplhi-Hilfe zu StrToInt:
Zitat:
|
Re: Typenumwandlungen
ja entschuldigung, vielleicht drück ich mich auch etwas schwerfällig aus :D
also ich möcht eine antwort von einem udp server auswerten und reagieren, in der dokumentation heißt es wie folgt: Zitat:
weiter gehts dann mit: Zitat:
Delphi-Quellcode:
soweit eigentlich ganz simpel, nun habe ich aber das problem aus diesem 4 zeichen
CallengeCode:= CallengeCode[4] + CallengeCode[3] + CallengeCode[2] + CallengeCode[1];
langen string diese komische challenge nummer zu formen |
Re: Typenumwandlungen
Ouch.. du hast eigentlich keinen String, sondern ein Array of Byte, das ist Dein eigentliches Problem (und dürfte Dir zudem massiv Probleme bereiten, sobald Delphi 2008 mit Unicode daherkommt).
Und wenn Du die letzten vier Bytes umgedreht hast, dann hast Du schon genau die Werte, die Du zurücksenden musst. Da brauchst Du nichts mehr konvertieren. |
Re: Typenumwandlungen
der server möchte aber diese challange nummer als string haben,
es reicht leider nicht einfach die bytes umzudrehen und zurückzusenden |
Re: Typenumwandlungen
Dein String muss 9 (8 + '$' bzw, bei '0x' 10) Zeichen lang sein, da es in deinem Beispiel um eine 4-Byte Zahl geht und ein Hexadezimalzeichen 4 Bit (0,5 Byte) repräsentiert, in deinem Beispiel sind es auch 8 Hexadezimalzeichen.
[Edit] Wenn ich das richtig verstehe:
Delphi-Quellcode:
Das ganze ausgehend davon das s[0], das erste Zeichen ist bin bei string grad nicht mehr sicher, ob das nicht doch bei s[1] anfängt, dann einfach überall beim Index eins drauf. (ach es leben wunderschöne #0-terminierte char-arrays)
function foobar(s: string): Integer;
begin Result:= StrToInt('$' + s[8] + s[9] + s[6] + s[7] + s[4] + s[5] + s[2] + s[3]); end; |
Re: Typenumwandlungen
In dem Fall ist wohl IntToHex(byte1, 2) + IntToHex(byte2, 2) + IntToHex(byte3, 2) + IntToHex(byte4, 2) das richtige.
Oder, Du packst die Werte zuvor in einen einzigen Wert - also gleich beim auseinanderpflücken, IntToHex(byte1 + byte2*256 + byte3*65536 + byte4*16777216, 8 ) |
Re: Typenumwandlungen
nun hab ich leider irgendwie den anschluss verloren,
ich hatte ja gehofft das es recht einfach möglich ist diesen 4 byte string so umzuwandeln das ich über StrToInt($...) irgendwie an diesen wert komme |
Re: Typenumwandlungen
so nun hab ich es doch tatsächlich noch hinbekommen:
Delphi-Quellcode:
vielen vielen lieben dank für eure hilfe und geduld =)
function StringtoHex(Data: string): string;
var i, i2: Integer; s: string; begin i2 := 1; for i := 1 to Length(Data) do begin Inc(i2); if i2 = 2 then begin i2 := 1; end; s := s + IntToHex(Ord(Data[i]), 2); end; Result := '$' + s; end; CallengeCode:= CallengeCode[4] + CallengeCode[3] + CallengeCode[2] + CallengeCode[1]; CallengeCode:= StringtoHex(CallengeCode); CallengeCode:= IntToStr(LongInt(StrToInt(CallengeCode))); :hello: :hello: :hello: :hello: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 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