![]() |
Erhalte richtige Bytes, das if wird nicht durchlaufen
Hallöchen,
ich erhalte zwar die richtigen Bytes, aber ins else if komme ich trotzdem nicht rein! Warum?
Delphi-Quellcode:
Ich erhalte auch die Bytes #106#32, aber in den else Teil komme ich einfach nicht rein, sondern in den if Teil mit der Message, Falsches Byte.
ShowMessage(IntToStr(Byte(sCom[1])) + IntToStr(Byte(sCom[2])));
if ((sCom[1] = #106) and ((Byte(sCom[2]) and 0) = 0)) then begin ShowMessage('Falsches Byte'); end else if ((sCom[1] = #106) and ((Byte(sCom[2]) and 32) = 32)) then begin ShowMessage('Richtiges Byte'); end; //if Es macht auch keinen Unterschied ob ich es mit ((Byte(sCom[2]) and 32) = 32)) oder ((Byte(sCom[2]) and 32) <> 0)) mache! Was ist nur Falsch? Vielen Dank. Grüsse, Daniel :hi: |
Wenn ich dich richtig verstanden habe, dann musst du nur das else wegnehmen...
Chris |
Zitat:
Grüsse, Daniel :hi: |
Zitat:
Mal ein kleines Beispiel:
Delphi-Quellcode:
Die Bedingung (irgendwas AND 0) = 0 ist also immer True.
AND 1 0
1 1 0 0 0 0 Daraus ergibt sich: 1010101 0000000 ------- 0000000 |
Jetzt wo Du es sagst. :)
Aber trotzdem, ich muss einmal prüfen ob die Bytes #106#0 sind, dann soll die Message kommen, oder wenn die Bytes #106#32 lauten, dann die andere Message. Oder besser gesagt, Das Bit 6 der Adresse 106 auf 1 ist oder nicht! Hab das oben geändert, jedoch bringt mir das jetzt andere Probleme. Das ShowMessage(IntToStr(Byte(sCom[1])) + IntToStr(Byte(sCom[2]))); kommt ständig, mit der Ausgabe 1060. Jedoch wird kein If ausgeführt. Grüsse, Daniel :hi: |
Probiers mal so:
Delphi-Quellcode:
Oder mach sowas in die Richtung:
ShowMessage(IntToStr(Byte(sCom[1])) + IntToStr(Byte(sCom[2])));
if (sCom[1] = #106) and (Byte(sCom[2]) = #0) then begin ShowMessage('Falsches Byte'); end else if ((sCom[1] = #106) and ((Byte(sCom[2]) and 32) <> 0)) then begin ShowMessage('Richtiges Byte'); end; //if
Delphi-Quellcode:
if (sCom[1] = #106) then
begin if Byte(sCom[2]) = #0 then begin ShowMessage('Falsch'); end; if (Byte(sCom[2]) and 32) <> 0 then begin ShowMessage('Richtig'); end; end; |
Ich hab mal die Reihenfolge der if geändert und jetzt geht es.
Delphi-Quellcode:
Das klappt wunderbar, aber die Idee mit den Verschachtelten Ifs würde warscheinlich auch gehen.
if ((sCom[1] = #106) and ((Byte(sCom[2]) and 32) <> 0)) then
begin ShowMessage('Richtiges Byte!'); end else begin ShowMessage('Falsches Byte!'); end; //if Danke Euch! Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 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