![]() |
HEX und String (Bit 6 auslesen)
Ich hab ein Problem.
Ich code grad an einem kleinen Tool um D2V-Dateien in Delphi zu prasen. Hier mal die relevanten Auszüge aus dem ![]() Zitat:
bit 6 Progressive_Frame Flag (See notes below) 0 (Interlaced) 1 (Progressive) Nur wie? ![]() |
Re: HEX und String (Bit 6 auslesen)
Delphi-Quellcode:
;)
if (value and $00100000) <> 0 then
// Bit gesetzt |
Re: HEX und String (Bit 6 auslesen)
Bit 6? Julius? :shock: War Bit 6 in Hex nicht $40? :gruebel:
Edit: so wie ich das sehe meinst du Bit 1 von Nibble 6 ;) |
Re: HEX und String (Bit 6 auslesen)
Delphi-Quellcode:
... bringt mich nicht weiter, da Delphi jedes Zeichen einzeln sieht.
if pos(uppercase(' '),uppercase(listbox1.items[i])) > 0 then
if (strtoint(listbox1.items[i]) and $00100000) <> 0 then checkbox1.checked:=true else checkbox1.checked:=false; Wie komme ich z.B. auf b0? b0 ist doch HEX oder? Mit Copy? Tempstring > Copy > Value und dann den Code ... |
Re: HEX und String (Bit 6 auslesen)
Mit folgenden Codes kann ich nun die Werte in grün auslesen:
d00 1 0 2048 1 1 92 b2 a2 b2 b2 a2 b2 b2 a2 b2 b2 a2
Delphi-Quellcode:
function GetTok(const Str: string; const Idx: Integer; const Sep: Char): string;
var StrLen: Integer; StrIdx: Integer; ResLen: Integer; TokIdx: Integer; begin Result := ''; if Idx > 0 then begin StrLen := Length(Str); SetLength(Result, StrLen); ResLen := 0; TokIdx := 0; for StrIdx := 1 to StrLen do begin if (Str[StrIdx] <> Sep) and ((StrIdx = 1) or (Str[StrIdx-1] = Sep)) then Inc(TokIdx); if TokIdx > Idx then Break else if (TokIdx = Idx) and (Str[StrIdx] <> Sep) then begin Inc(ResLen); Result[ResLen] := Str[StrIdx]; end; end; SetLength(Result, ResLen); end; end;
Delphi-Quellcode:
nur value währe kein gültiger integer:
if pos(uppercase(' '),uppercase(listbox1.items[i])) > 0 then
begin temp:=listbox1.Items[i]; for tempi := 7 to length(temp) do begin value:=GetTok(temp, tempi, ' '); //Showmessage(value); if (strtoint(value) and $00100000) <> 0 then checkbox1.checked:=true else checkbox1.checked:=false; end; end; if (strtoint(value) and $00100000) <> 0 then checkbox1.checked:=true else checkbox1.checked:=false; |
Re: HEX und String (Bit 6 auslesen)
Zitat:
Aber Bit 6 ist imho $20 und nicht $40 (Bit 7 ...) :mrgreen: Btw.: Was ist ein Nibble ? :gruebel: |
Re: HEX und String (Bit 6 auslesen)
Zitat:
Zitat:
|
Re: HEX und String (Bit 6 auslesen)
Ich will euch ja nicht unterbrechen ;), aber könnte mir einer von Euch "Gurus" ein Beispiel posten?
Es könnte ja sein, dass ich mit meinem Ansatz total falsch liege ...
Delphi-Quellcode:
... damit kommt immer noch ne Fehlermeldung alla 'b2' ist ein gülter Integer Wert.
if pos(uppercase(' '),uppercase(listbox1.items[i])) > 0 then
begin temp:=listbox1.Items[i]; for tempi := 7 to length(temp) do begin value:=GetTok(temp, tempi, ' '); //Showmessage(value); i2:=strtoint(Inttohex(strtoint('x'+value),2)); showmessage(inttostr(i2)); if (i2 and $20) <> 0 then checkbox1.checked:=true else checkbox1.checked:=false; end; end; |
Re: HEX und String (Bit 6 auslesen)
Dann müsste das ja die Lösung sein:
Delphi-Quellcode:
Da ja mein zu prasender Text so aussieht:
if pos(uppercase(' '),uppercase(listbox1.items[i])) > 0 then
begin temp:=listbox1.Items[i]; for tempi := 7 to length(temp) do begin value:=GetTok(temp, tempi, ' '); Showmessage(value+'-'+inttostr($20)); //i2:=strtoint(Inttohex(strtoint('x'+value),2)); //showmessage(inttostr(i2)); //if (i2 and $20) <> 0 then if value = inttostr($20) then thirtytwo:=thirtytwo+1; if thirtytwo > 0 then checkbox1.checked:=true else checkbox1.checked:=false; end; end;
Code:
d00 1 0 2048 1 1 92 b2 a2 b2 b2 a2 b2 b2 a2 b2 b2 a2
900 1 0 53248 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 133120 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 423936 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 712704 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 917504 1 1 32 32 92 b2 b2 a2 a2 b2 b2 a2 900 1 0 1273856 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 1644544 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 1910784 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 2201600 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 2516992 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 900 1 0 2838528 1 1 32 32 92 b2 b2 a2 b2 b2 a2 b2 b2 a2 |
Re: HEX und String (Bit 6 auslesen)
Hmm, stimmt jetzt doch nicht, da folgender Code auch progressiv ist:
Code:
d00 1 0 2048 1 1 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 f2 e2
900 1 0 65536 1 1 72 72 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 900 1 0 176128 1 1 72 72 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 900 1 0 284672 1 1 72 72 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 900 1 0 391168 1 1 72 72 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 900 1 0 505856 1 1 72 72 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 900 1 0 630784 1 1 72 72 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 900 1 0 794624 1 1 72 d2 f2 f2 e2 e2 f2 f2 e2 f2 f2 e2 900 1 0 1011712 1 1 72 72 d2 f2 f2 e2 f2 e2 f2 f2 e2 e2 900 1 0 1280000 1 1 72 72 d2 f2 e2 f2 f2 e2 e2 f2 f2 e2 900 1 0 1585152 1 1 72 d2 f2 f2 e2 e2 f2 f2 e2 f2 f2 e2 900 1 0 1943552 1 1 72 72 d2 f2 f2 e2 f2 f2 e2 f2 f2 e2 900 1 0 2318336 1 1 72 72 d2 e2 f2 f2 e2 f2 e2 f2 f2 e2 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 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