![]() |
Re: HexToInt
In diesem Fall wohl 'F'
Sonst
Delphi-Quellcode:
Wert := Ord('ÿ');
|
Re: HexToInt
Alternativ:
Delphi-Quellcode:
Dann kommt für
var b1: byte;
b2: byte; b3: byte; b4: byte; Value: integer; begin Value:= b1* 16777216 + b2 * 65536 + b3 * 256 + b4; end; FF FF FF E2 auch -30 raus. :drunken: |
Re: HexToInt
Das er FF als -1 erkennt brauchste die Anzahl der möglichen Hexadezimalstellen.
Delphi-Quellcode:
Nachteil: 15 ist nicht F sonder 0F
function pow(x,n:Integer):Integer;
begin if n>1 then result:=x*pow(x,n-1) else result:=x; end; var x :Integer; s :String; begin s:='FF'; x:=HexToInt(s); if x>pow(16,Length(s)-1) then x:=x-pow(16,Length(s)); end; //x ist der Integer-Wert |
Re: HexToInt
ist das FF FF FF E2 jetzt die Hexdarstelung des Strings, oder sieht der String genau so aus?
Delphi-Quellcode:
S := 'FF FF FF E2';
i := StrToInt(StringReplace('$' + S, ' ', '', [rfReplaceAll])); S := #$FF#$FF#$FF#$E2; i := PLongInt(@S[1])^; |
Re: HexToInt
String mit leezeichen?
wie wärs damit?
Delphi-Quellcode:
for i:=1 to Length(S) do
if S[i]=' ' then s[i]:=''; |
Re: HexToInt
Zitat:
![]() und dann würde bei dieser Zählrichtung schnell der Index aus dem Bereich rauswandern, da der String schließlich schrumpfen würde :angel2: |
Re: HexToInt
Delphi-Quellcode:
also sowas eher? Danke so lernt man
var s :String;
i :Integer; begin s:=edit1.Text; repeat Delete(s,pos(' ',s),1); until pos(' ',s)=0; edit2.text:=s; |
Re: HexToInt
jupp, würde gehn
oder einfach die Zählrichtung umkehren
Delphi-Quellcode:
das Problem bei for i := 1 to Length(S) do ist einfach, daß Length nur bei Schleifenbeginn einmal ausgewertet, das Ergebnis gespeichert und danach nur noch die "Kopie" verwendet wird.
for i := Length(S) downto 1 do
if S[i] = ' ' then Delete(S, i, 1); außerdem würden bei 2 folgenden ' ' immer das Zweite übersprungen, da sich ja im nächsten Durchgang der Index erhöht und das 2. ' ' eines vorrutscht. und im Notfall würde auch ![]() |
Re: HexToInt
Hallo zusammen,
zur Info: die von mir genannten Werte kommt als HEX im Format HiWord/LoWord rein. Es ist also kein String in dem Sinne, wo etwaige Leerzeichen gelöscht werden müssten. War jetzt vielleicht von mir etwas blöd ausgedrückt - sorry. Gruß, Carsten |
Re: HexToInt
Hallo zusammen,
zur Info: Die von mir genannten Werte kommen als HEX im Format HiWord/LoWord rein. Es müssen also keine etwaige Leerzeichen gelöscht werden. Im Trace-Log der von mir verwendeten Komponenten ApdCOMPort (s. ![]() [FF][FF][FF][E2] Da jedoch die Komponente kein GetByte/GetWord kennt, sondern nur ein GetChar/GetBlock, werden die (Einzel-)Werte vor mir via GetChar abgeholt, um sie dann via Ord in Zahlen zu wandeln bzw. daraus letztendlich wieder den ursprünglichen Wert -30 zu erhalten. Sollte ich mich da etwas unklar ausgedrückt haben, so tut es mir leid. Gruß, Carsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 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