AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Erhalte richtige Bytes, das if wird nicht durchlaufen
Thema durchsuchen
Ansicht
Themen-Optionen

Erhalte richtige Bytes, das if wird nicht durchlaufen

Ein Thema von Daniel B · begonnen am 4. Mär 2003 · letzter Beitrag vom 4. Mär 2003
Antwort Antwort
Daniel B
(Gast)

n/a Beiträge
 
#1

Erhalte richtige Bytes, das if wird nicht durchlaufen

  Alt 4. Mär 2003, 21:14
Hallöchen,

ich erhalte zwar die richtigen Bytes, aber ins else if komme ich trotzdem nicht rein! Warum?
Delphi-Quellcode:
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
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.
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
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2
  Alt 4. Mär 2003, 21:17
Wenn ich dich richtig verstanden habe, dann musst du nur das else wegnehmen...

Chris
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 4. Mär 2003, 21:21
Zitat von Chakotay1308:
Wenn ich dich richtig verstanden habe, dann musst du nur das else wegnehmen...
Nee, wenn ich zwei einzelne Ifs mache, dann komme ich in gar keinem rein.

Grüsse, Daniel
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4
  Alt 4. Mär 2003, 21:45
Zitat:
(Byte(sCom[2]) and 0) = 0)
Was willst du den damit machen?

Mal ein kleines Beispiel:
Delphi-Quellcode:
AND 1 0
  1 1 0
  0 0 0

Daraus ergibt sich:
1010101
0000000
-------
0000000
Die Bedingung (irgendwas AND 0) = 0 ist also immer True.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 4. Mär 2003, 21:58
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
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#6
  Alt 4. Mär 2003, 22:46
Probiers mal so:
Delphi-Quellcode:
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
Oder mach sowas in die Richtung:
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;
Die Wichtigkeit eines Postings im Forum ist reziprok zur Anzahl der enthaltenenen, kumulierten Ausrufungszeichen!!!
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#7
  Alt 4. Mär 2003, 22:57
Ich hab mal die Reihenfolge der if geändert und jetzt geht es.
Delphi-Quellcode:
        if ((sCom[1] = #106) and ((Byte(sCom[2]) and 32) <> 0)) then
        begin
          ShowMessage('Richtiges Byte!');
        end
        else
        begin
          ShowMessage('Falsches Byte!');
        end; //if
Das klappt wunderbar, aber die Idee mit den Verschachtelten Ifs würde warscheinlich auch gehen.
Danke Euch!

Grüsse, Daniel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz