Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi and-Funktion (https://www.delphipraxis.net/106175-funktion.html)

MrMyagi 6. Jan 2008 19:10


and-Funktion
 
Moin, ich bins wieder.
Kann ich in dem Folgenden Beispiel das and,
als und benutzen ode rheißt es wieder entweder, oder??

Delphi-Quellcode:
procedure TForm1.ButtonAuswertenClick(Sender: TObject);
begin
if (eigeneWahl = 1) and (WahlGegner = 1) then
begin
ShowMessage('Unentschieden, keiner bekommt einen Punkt!');
Buttonbestaetigen.Enabled := true;
ButtonAuswerten.Enabled := false;
end
end;

taaktaak 6. Jan 2008 19:11

Re: and-Funktion
 
Moin, Moin,

and = und
or = oder

:P

DeddyH 6. Jan 2008 19:12

Re: and-Funktion
 
Der Block wird dann ausgeführt, wenn beide Bedingungen zutreffen. Das heißt also und ;)

dominikkv 6. Jan 2008 19:13

Re: and-Funktion
 
True and True => True
alles andere ist false.

Also wird das nur ausgeführt wenn wirklich beide 1 sind

MrMyagi 6. Jan 2008 19:13

Re: and-Funktion
 
Ok danke,
das ist mir ja eigendlich auch bewusst aber in dem folgenden
Beispiel heißt es entweder...oder

Delphi-Quellcode:
if (text <> 'Spieleinladung') and (text <> 'Einladungannehmen')
    and (text <> 'a') and (text <> 'c') and (text <> 'c') then
begin
Memo1.Lines.Add(Text);
end;

dominikkv 6. Jan 2008 19:14

Re: and-Funktion
 
Zitat:

Zitat von MrMyagi
Ok danke,
das ist mir ja eigendlich auch bewusst aber in dem folgenden
Beispiel heißt es entweder...oder

Delphi-Quellcode:
if (text <> 'Spieleinladung') and (text <> 'Einladungannehmen')
    and (text <> 'a') and (text <> 'c') and (text <> 'c') then
begin
Memo1.Lines.Add(Text);
end;

nein

3_of_8 6. Jan 2008 19:14

Re: and-Funktion
 
Und entweder-oder ist dann das xor. ;)

(and ist übrigens keine Funktion, sondern ein Operator, genauer ein logischer, binärer Operator, aber das ist natürlich nur eine Nebensache. ;) )

Und in dem von dir gezeigten Codestück heißt es auch und. Ein and ist immer ein und.

MrMyagi 6. Jan 2008 19:16

Re: and-Funktion
 
Ok gut, dankeschön,
dann muss ich wohl etwas falsch verstanden haben :oops:

DeddyH 6. Jan 2008 19:19

Re: and-Funktion
 
Schau mal hier.

MrMyagi 6. Jan 2008 19:22

Re: and-Funktion
 
Sieh gut aus, werde ich gleich einmal durcharbeiten,
dankeschön und einen schönen Abend noch.


mfG, Nico

Matze 6. Jan 2008 19:24

Re: and-Funktion
 
Zitat:

Zitat von MrMyagi
Ok danke,
das ist mir ja eigendlich auch bewusst aber in dem folgenden
Beispiel heißt es entweder...oder

Delphi-Quellcode:
if (text <> 'Spieleinladung') and (text <> 'Einladungannehmen')
    and (text <> 'a') and (text <> 'c') and (text <> 'c') then
begin
Memo1.Lines.Add(Text);
end;

Guck doch mal, was ich dazugeschrieben hatte:

Zitat:

Zitat von Matze
Delphi-Quellcode:
if (text <> 'Spieleinladung') and (text <> 'Einladungannehmen') then
begin
  // Anweisungen
end;
So werden die Anweisungen nur ausgeführt, wenn "text" weder "Spieleinladung" noch "Einladungannehmen" ist.

Das heißt doch genau: Wenn ungleich das eine und ungleich das andere, dann mache etwas. Du musst nur genau lesen: "Weder noch" <> "Entweder oder". ;)

3_of_8 6. Jan 2008 19:24

Re: and-Funktion
 
@DeddyH: Mit Bitmasken hat das gar nichts zu tun. Bitmasken verwenden bitweise Operatoren, während das and hier ein logischer Operator ist.

DeddyH 6. Jan 2008 19:26

Re: and-Funktion
 
Immerhin sind dort and, or und xor beschrieben.

r2c2 6. Jan 2008 20:48

Re: and-Funktion
 
Zitat:

Zitat von DeddyH
Immerhin sind dort and, or und xor beschrieben.

Aber dort sind es andere and und or. Auch, wenn sie in Delphi genauso heißen, machen sie etwas anderes.
Ein Negativ-Beispiel:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  a, b: Boolean;
begin
  a := True;
  b := GaaanzFieseAPIFunktion; // = true(-1)
  if (Integer(a) or Integer(b)) = Integer(True) then
  begin
    ShowMessage('mich sieht man nicht');
  end;
 
  a := True;
  b := GaaanzFieseAPIFunktion; // = true(-1)
  if a or b then
  begin
    ShowMessage('Hallo');
  end;
end;
In C++ bräuchte man nicht ganz so viele Verrenkungen für so n Blödsinn zu machen...

Ein passender Link:
http://r2c2.weingut-rehn.de/content5..._Variablen.htm

mfg

Christian

3_of_8 6. Jan 2008 20:54

Re: and-Funktion
 
Das muss noch nicht mal ne ganz fiese API-Funktion sein, es reicht schon, statt dem zweiten Boolean einen LongBool zu verwenden.

r2c2 6. Jan 2008 21:09

Re: and-Funktion
 
Zitat:

Zitat von 3_of_8
Das muss noch nicht mal ne ganz fiese API-Funktion sein, es reicht schon, statt dem zweiten Boolean einen LongBool zu verwenden.

Nö, ich mein ich hätts damels ausprobiert. Reicht nicht. Hab momentan leider kein Delphi Griffbereit zum Ausprobieren. Lazarus lässt sich jedenfalls nicht so leicht linken(noch nicht mal von der gaaanz fiesen Funktion[1])...

[1] gemeint ist das Originalbeispiel im Tutorial; nicht das mit den Bitoperatoren; das funktioniert auch mit Lazarus...

mfg

Christian

3_of_8 6. Jan 2008 21:15

Re: and-Funktion
 
Ich habs grad eben ausprobiert. ;)

LongBool genommen, True zugewiesen, auf nen Integer gecastet, Ergebnis: -1

r2c2 7. Jan 2008 08:16

Re: and-Funktion
 
Zitat:

Zitat von 3_of_8
Ich habs grad eben ausprobiert. ;)

LongBool genommen, True zugewiesen, auf nen Integer gecastet, Ergebnis: -1

Und wie siehts damit aus:
Delphi-Quellcode:
var;
  b: LongBool;
begin
  b := True;
  if b = True then
  begin
    ShowMessage('Hallo');
  end;
end;
Wenn das auch geht(d.h. nix angezeigt wird), muss ich vllt. das Tutorial noch abaendern, aber ich meine damals haett ich das ausprobiert und gemerkt, dass da die CompilerMagic zuschlaegt...

Aber ich glaub wir werden OT:
Tatsache ist, dass man sowas, wie oben *nicht* machen sollte. Also niemals auf = True pruefen. Warum steht im verlinkten Tutorial.

mfg

Christian

Matze 7. Jan 2008 15:57

Re: and-Funktion
 
Zitat:

Zitat von r2c2
Aber ich glaub wir werden OT:
Tatsache ist, dass man sowas, wie oben *nicht* machen sollte. Also niemals auf = True pruefen. Warum steht im verlinkten Tutorial.

Oder, ich finde es übersichtlicher und besser erklärt ;) , in der DP.


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