Autor Beitrag
The6er
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 29.04.09 22:00 
Hallo, ich habe folgenden Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  Befehl := Location + ' -h ' + hash + ' -c' ;
  If Checkbox1.Checked= true then
   Befehl := Befehl + 'a';
  If Checkbox2.Checked= true then
   Befehl := Befehl + 'A' ;
  If Checkbox3.Checked= true then
   Befehl := Befehl + '0';
  If Checkbox4.Checked= true then
   Befehl := Befehl + '~' ;

  If Checkbox1.Checked= false and Checkbox2.Checked= false and
     Checkbox3.Checked= false and Checkbox4.Checked= false
     then
     ShowMessage('Bitte Etwas Ankreuzen');

aber egal ob die Checkboxen Aktiviert sind oder nicht, aber macht NIE die oberne Anweisungen und zeigt IMMER die untere Nachricht an...

Weiß jemand was ich falsch gemacht habe?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Mi 29.04.09 22:08 
hi, versuch das mal ;)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
If Checkbox1.Checked = False then
   if Checkbox2.Checked = False then
      if Checkbox3.Checked= False then
         if Checkbox4.Checked = False then
            ShowMessage('Bitte Etwas Ankreuzen');
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 29.04.09 22:10 
user profile iconThe6er hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  If Checkbox4.Checked= true then
   Befehl := Befehl + '~' ;

  If Checkbox1.Checked= false and Checkbox2.Checked= false and
     Checkbox3.Checked= false and Checkbox4.Checked= false
     then
Der Vergleich mit Booleanwerten (z.B. if x = true then) ist nicht nur unschön und unlogisch, sondern falsch.
Hier habe ich mal ein kleines Beispiel gebastelt, wann es schief geht:
www.delphi-forum.de/....php?p=548760#548760
Mehr dazu steht hier unter Anfängerfehler:
www.delphi-treff.de/...olean-werten/page/4/

Richtig:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  if Checkbox4.Checked then
    Befehl := Befehl + '~';

  if not (Checkbox1.Checked or Checkbox2.Checked or
    Checkbox3.Checked or Checkbox4.Checked) then
    ...

user profile iconwhitef hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
If Checkbox1.Checked = False then
   if Checkbox2.Checked = False then
Erstens ist der Vergleich mit False falsch, zweitens wird das so extrem unübersichtlich...


Zuletzt bearbeitet von jaenicke am So 03.05.09 16:33, insgesamt 2-mal bearbeitet
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mi 29.04.09 22:13 
Kleine Ergänzung: Nicht funktioniert hat das am Anfang jedoch nur nicht weil Klammern fehlen:
ausblenden Delphi-Quelltext
1:
2:
3:
If (Checkbox1.Checked= false) and (Checkbox2.Checked= false) and
(Checkbox3.Checked= false) and( Checkbox4.Checked= false)
then

Aber es bleibt trotzdem schlechter Stil :wink:

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Erstens ist der Vergleich mit False falsch,[...]

Wann liefert der denn falsche Ergebnisse?

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
The6er Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 29.04.09 22:19 
Danke, ihr habt mir sehr geholfe, nächstesmal schau ich in die Anfänger Sektion....
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 29.04.09 22:22 
user profile iconjakobwenzel hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Erstens ist der Vergleich mit False falsch,[...]

Wann liefert der denn falsche Ergebnisse?
Ok, ganz genau gesagt ist nur der mit True wirklich falsch, aber diese Unterscheidung führt nur wieder zu Fehlern... :roll:

Und wenn man das wirklich verstanden hat und nicht mehr mit True vergleicht, dann kommt man gar nicht erst auf die Idee mit False zu vergleichen...
Womit dann nebenbei auch die Klammerung eben wegfällt.
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Mi 29.04.09 22:54 
user profile iconwhitef hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
If Checkbox1.Checked = False then
   if Checkbox2.Checked = False then


:D
kommt davon wenn man den ganzen tag mit VBA arbeitet und abends mal ne stunde im delphi forum was posten möchte... :D
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: So 03.05.09 16:27 
Also ich hätte das eher so gelöst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Befehl := Location + ' -h ' + hash + ' -c' ;
BefehlKopie:=Befehl;
  If Checkbox1.Checked= true then
    Befehl := Befehl + 'a';
  If Checkbox2.Checked= true then
    Befehl := Befehl + 'A' ;
  If Checkbox3.Checked= true then
    Befehl := Befehl + '0';
  If Checkbox4.Checked= true then
    Befehl := Befehl + '~' ;

If BefehlKopie=Befehl  then
  ShowMessage('Bitte Etwas Ankreuzen');


Es bleibt aber ja die Frage, ob Du den Checkboxen auch die Möglichkeit eines "grauen Kreuzes" gibst.
Die Möglichkeit ist ja, wenn man etwas auf jeden Fall so lassen möchte, wie es schon vorher war,
aber sich im Moment keien Gedanken darüber machen will/kann, ob das denn nun vorher angehakt war oder nicht.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 03.05.09 16:34 
user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
Also ich hätte das eher so gelöst:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Befehl := Location + ' -h ' + hash + ' -c' ;
BefehlKopie:=Befehl;
  If Checkbox1.Checked= true then
    Befehl := Befehl + 'a';
:hair: :hair: :roll:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Der Vergleich mit Booleanwerten (z.B. if x = true then) ist nicht nur unschön und unlogisch, sondern falsch.
Hier habe ich mal ein kleines Beispiel gebastelt, wann es schief geht:
www.delphi-forum.de/....php?p=548760#548760
Mehr dazu steht hier unter Anfängerfehler:
www.delphi-treff.de/...olean-werten/page/4/
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: So 03.05.09 16:45 
Heißt das also, man sollte lieber alles mit
ausblenden Delphi-Quelltext
1:
2:
If not Checkbox1.Checked= false then
        Befehl := Befehl + 'a';

lösen?
Naja - ist mir auch recht...
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 03.05.09 16:46 
Nein. Einfach mit
ausblenden Delphi-Quelltext
1:
2:
If CheckBox1.Checked then
  ShowMessage('Checkbox 1 ist gecheckt');

_________________
We are, we were and will not be.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 03.05.09 16:58 
Schau mal unabhängig vom Programmieren. Welchen dieser beiden Sätze wirst du dann sagen:
  • Wenn "das Wetter ist schön" wahr ist, dann werde ich heute Fußball spielen gehen.
  • Wenn das Wetter schön ist, dann werde ich heute Fußball spielen gehen.
Na? Wirst du wirklich den ersten Satz nehmen? ;-)
Eben, genau das ist aber das, was du in Delphi geschrieben hast...
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 03.05.09 17:00 
Und danach wollte er folgendes schreiben:
Zitat:

Wenn "das Wetter ist schlecht" falsch ist, dann werde ich heut Fußball spielen gehen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 03.05.09 17:03 
Nein, eher:
Wenn nicht "das Wetter ist gut" falsch ist, dann... :mrgreen:

Man muss sich das einfach einmal richtig überlegen, dann kommt man erst gar nicht mehr auf solche Verrenkungen. ;-)