Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   if not abfragen (https://www.delphipraxis.net/155188-if-not-abfragen.html)

xxsasch4xx 12. Okt 2010 12:05

Delphi-Version: 5

if not abfragen
 
wenn edit 2 und 3 beide gleichzeitig nicht 1 ergeben dann soll die meldung kommen dass es vorbei ist
also wenn eine der folgenen kombinationen auftritt soll die anweisung ausgeführt werden:
1 0
0 1
und
0 0

also wenn beide gleichzeitig 1 sind soll die anweisung nicht ausgeführt werden.
wie geht das?
will es aber mit dem not haben sonst müsste ich immer jede kombination abfragen die auftretn kann also 3 kombinationen insgesammt
mein ansatz war:
Delphi-Quellcode:
  begin
  if not(edit3.text='1') and not (edit2.text='1')
  then
  showmessage('vorbei')
  end;

mkinzler 12. Okt 2010 12:07

AW: if not abfragen
 
Delphi-Quellcode:
if not ((edit3.text='1') and (edit2.text='1')) then ...

DeddyH 12. Okt 2010 12:09

AW: if not abfragen
 
Deine Abfrage müsste doch funtionieren. Ansonsten versuche es mal mit
Delphi-Quellcode:
  begin
  if not((edit3.text='1') and (edit2.text='1'))
  then
  showmessage('vorbei')
  end;

xxsasch4xx 12. Okt 2010 12:14

AW: if not abfragen
 
Delphi-Quellcode:
begin
  if not(edit3.text='1') and (edit2.text='1')
  then
  showmessage('vorbei')
  end;
wenn ich das so mache dann wird die ausgabe nur gemacht wenn
edit 3 = 0 und edit 2 = 1
so hatte ich das ja auch zuerst
und als ich dann umgeformt hab zu

Delphi-Quellcode:
begin
  if not(edit3.text='1') and not (edit2.text='1')
  then
  showmessage('vorbei')
  end;
kommt es nur zur ausgabe wenn beide gleich 0 sind
aber ich will ja auch dass es zur ausgabe kommt wenn eins der beiden auf 1 ist

youuu 12. Okt 2010 12:15

AW: if not abfragen
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1055297)
wenn edit 2 und 3 beide gleichzeitig nicht 1 ergeben dann soll die meldung kommen dass es vorbei ist
also wenn eine der folgenen kombinationen auftritt soll die anweisung ausgeführt werden:

Zitat:

Zitat von xxsasch4xx (Beitrag 1055297)
1 0
0 1
und
0 0

Wiederspricht sich das nicht?

Ich glaube du willst das hier? ( Auf 1 0, 0 1 und 0 0 bezogen)

Delphi-Quellcode:
begin
  if not(edit3.text='1') OR not (edit2.text='1')
  then
  showmessage('das game ist vorbei')
  end;

xxsasch4xx 12. Okt 2010 12:18

AW: if not abfragen
 
also die anweisung soll nicht ausgeführt werdn wenn beide gleihczeitig 1 sind ansonsten soll immer ausgeführt werden!
sprich wenn beide 0 sind oder eins der beidn 1 ist!
aber sobald alle beide 1 sind soll nix mehr ausgeführt werden!
vieleicht war das in der ersten beschreibung etwas unschlüssig!

youuu 12. Okt 2010 12:20

AW: if not abfragen
 
Delphi-Quellcode:
begin
  if not(edit3.text='1') OR not (edit2.text='1')
  then
  showmessage('das game ist vorbei')
  end;
Dann wohl so :)

DeddyH 12. Okt 2010 12:21

AW: if not abfragen
 
Stimmt, OR statt AND. Oder eben die Lösung mit der äußeren Klammer. Oder die NOTs weglassen:
Delphi-Quellcode:
if (Edit2.Text <> '1') or (Edit3.Text <> '1') then

xxsasch4xx 12. Okt 2010 12:24

AW: if not abfragen
 
Delphi-Quellcode:
  if not(edit4.text='1') OR not (edit5.text='1')
ja so funktioniert es aber ich versteh nicht warum da ein oder hinkommt und nicht ein and..

youuu 12. Okt 2010 12:26

AW: if not abfragen
 
"And" sagt aus, das beide Edit Felder ungleich 1 seien müssen.
"OR" sagt, entweder Edit1 ungleich 1 oder Edit2 ungleich 1..

DeddyH 12. Okt 2010 12:26

AW: if not abfragen
 
Das AND greift, wenn beide Bedingungen zutreffen, OR greift schon, wenn mindestens eine Bedingung zutrifft.

xxsasch4xx 12. Okt 2010 12:30

AW: if not abfragen
 
wäre dann in der digitaltechnik eine nicht oder verküpfung oder?

DeddyH 12. Okt 2010 12:35

AW: if not abfragen
 
Was meinst Du jetzt? Nicht oder (NOR) heißt ja, das Ergebnis einer Oder-Verknüpfung zu negieren.

mkinzler 12. Okt 2010 12:37

AW: if not abfragen
 
Hier wird aber eine AND Verknüpfung negiert

Sir Rufo 12. Okt 2010 12:53

AW: if not abfragen
 
Das hier
Zitat:

Zitat von DeddyH (Beitrag 1055299)
Delphi-Quellcode:
  begin
  if not((edit3.text='1') and (edit2.text='1'))
  then
  showmessage('vorbei')
  end;

ist das Gleiche wie das hier (alle Klammern beachten)
Zitat:

Zitat von youuu (Beitrag 1055302)
Delphi-Quellcode:
begin
  if not(edit3.text='1') OR not (edit2.text='1')
  then
  showmessage('das game ist vorbei')
  end;

denn
Code:
not A or not B = not ( A and B )
not ( A and B ) <> not A and B
Wer es nicht glaubt macht sich eine Wertetabelle ;)

DeddyH 12. Okt 2010 13:06

AW: if not abfragen
 
IIRC (ist lange her) ändert eine Zusammenfassung/Auflösung in Verbindung mit NOT das AND immer in OR und umgekehrt.
Code:
not (a and b)
<=> not a or not b

not (a or b)
<=> not a and not b

Aphton 12. Okt 2010 13:25

AW: if not abfragen
 
Des Problem's Lösung:
Delphi-Quellcode:
var
  e2, e3: Integer;
begin
  e2 := StrToInt( Edit2.Text ) mod 2;
  e3 := StrToInt( Edit3.Text ) mod 2;
  if Boolean( e2 xor e3 ) or ( e2 and e3 = 0 ) then
    ShowMessage( 'Vorbei' );
end;

mkinzler 12. Okt 2010 13:27

AW: if not abfragen
 
Diese Lösung ist immer noch zu einfach :stupid:

Aphton 12. Okt 2010 13:32

AW: if not abfragen
 
Man könnte ja - wenn man Lust darauf hat - die Bedingungsabfrage in die GPU verlagern, aber ... btw. das hätten wir übrigens schonmal und zwar als ein gewisses Forummitglied wissen wollte, wie man Zahlen negiert...
*Nostalgie

MfG

DeddyH 12. Okt 2010 13:33

AW: if not abfragen
 
Außerdem würde wenn ich das richtig sehe jede Kombination ungerader Zahlen als gültig angesehen.

BUG 12. Okt 2010 13:37

AW: if not abfragen
 
Zitat:

Zitat von DeddyH (Beitrag 1055329)
IIRC (ist lange her) ändert eine Zusammenfassung/Auflösung in Verbindung mit NOT das AND immer in OR und umgekehrt.

Und das Ganze ist bekannt unter dem Namen De Morgan'schen Regeln.

David Martens 12. Okt 2010 23:31

AW: if not abfragen
 
wenn da nur 0 oder 1 drinstehen kann dann mach's doch einfach so:
Delphi-Quellcode:
begin
  if edit3.text='0' or edit2.text='0'
  then
    showmessage('vorbei')
end;
oder so, wenn es darauf ankommt das NICHT zwei Einsen drinstehen:
Delphi-Quellcode:
begin
  if edit3.text<>'1' or edit2.text<>'1'
  then
    showmessage('vorbei')
end;

DeddyH 13. Okt 2010 08:01

AW: if not abfragen
 
Letzteres wurde bereits genannt. Außerdem hast Du die Klammern vergessen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 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