Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi problem bei checkbox und bedingungen?ausführung falsch (https://www.delphipraxis.net/65609-problem-bei-checkbox-und-bedingungen-ausfuehrung-falsch.html)

delphineuling88 18. Mär 2006 18:28


problem bei checkbox und bedingungen?ausführung falsch
 
Habe hier mein programm und wenn checkbox 1 aktiviert ist und die varable a über oder gleich 90 ist soll er ansatt ein item aus lisbox1 ein alle einfügen das tut er aber nicht

und bei der zweiten bedingung also wenn checkbox2 aktiviert ist soll er wen der wert der variable meh über 80 ist ein listbox1 item plus ein weiteres hinschreiben das tut er aber nur wenn der radiobutton1 ausgewählt wurde und nicht bei radiobutton 2 oder 3
bitte helft mir


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
 var mmh,meh,a:integer;
 begin
   meh:= Random(100) + 1;
   mmh:= Random(100) + 1;
   a:= Random (100)+1;

   If (checkbox1.Checked) and (a>=90)
    then If RadioButton1.Checked
      Then If (mmh <= 100) and (mmh >25)
       Then
          label17.Caption:='Wer muss Trinken? ' +'Alle'+ ' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
       else
          label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';


      If RadioButton2.Checked
      Then If (mmh >= 50)
       Then
          label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
       else
          label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';


      If RadioButton3.Checked
      Then If mmh > 75
       Then
          label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
       else
          label17.Caption:='Wer muss Trinken? ' + 'Alle' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';

   If (checkbox2.Checked=false) or (meh < 80)
    then If RadioButton1.Checked
     Then If (mmh <= 100) and (mmh >25)
      Then
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
      else
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';

    If RadioButton2.Checked
     Then If (mmh >= 50)
       Then
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
        else
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';

    If RadioButton3.Checked
      Then If mmh > 75
        Then
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
        else
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';





   If Checkbox2.Checked
    Then if meh >= 80
     then If RadioButton1.Checked
      Then If (mmh <= 100) and (mmh >25)
       Then
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
       else
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';


      If RadioButton2.Checked
      Then If (mmh >= 50)
       Then
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
       else
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';


      If RadioButton3.Checked
      Then If mmh > 75
       Then
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
       else
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';

   If (checkbox2.Checked=false) or (meh < 80)
    then If RadioButton1.Checked
     Then If (mmh <= 100) and (mmh >25)
      Then
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
      else
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';

    If RadioButton2.Checked
     Then If (mmh >= 50)
       Then
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
        else
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';

    If RadioButton3.Checked
      Then If mmh > 75
        Then
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
        else
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';

 end

Der_Unwissende 18. Mär 2006 19:05

Re: problem bei checkbox und bedingungen?ausführung falsch
 
Hi, und herzlich willkommen in der Delphi Praxis :dp:

Was dein Problem angeht, so denke ich liegt es einfach in dem schlechten Codestil. Nimm es nicht böse / falsch auf, aber mit dem Code den du hier gepostet hast sind Fehler (auch in anderen Programmen) nicht unwahrscheinlich. Es gibt ein paar schöne Werke zum Thema guter Codestil und natürlich gibt es auch für Delphi eine gewisse Konvention (und auch bei Delphi wird das gerne ignoriert), die besagt dass einem if immer ein begin end folgen sollte. Ist gar nicht so viel arbeit und erspart eine Menge Ärger!

Sorry, werde jetzt nicht deinen gesamten Code durchgehen, aber hier ein einfaches Beispiel wie du es umformen solltest, dann findest du bestimmt schnell deinen Fehler:

Delphi-Quellcode:
var mmh,meh,a:integer;
begin
   meh:= Random(100) + 1;
   mmh:= Random(100) + 1;
   a:= Random (100)+1;

   If (checkbox1.Checked) and (a>=90) then
     begin

       // alles was hier folgt, wird nur geprüft wenn obere Bedingung erfüllt ist.
       // ohne das begin wird nur die nächste Bedingung geprüft

      If RadioButton1.Checked Then
        begin
          If (mmh <= 100) and (mmh >25) Then
            begin
              label17.Caption := ....;
            end // If (mmh <= 100) and (mmh >25)
          else
            begin
              label17.Caption := ....;
            end; // if not ((mmh <= 100) and (mmh >25))
        end; // If RadioButton1.Checked
     
      // Wäre ohne erstes begin immer gecheckt worden, auch wenn Checkbox1.Checked = false
      If RadioButton2.Checked Then  
        begin
          If mmh >= 50 Then
            begin
              label17.Caption := ...;
            end // If mmh >= 50
           else
             begin
             end; // if not (mmh >= 50)
        end; // If RadioButton2.Checked

     ....
     end; // if (checkbox1.Checked) and (a>=90)
So ist immer ganz klar, wo welcher Block endet. Ansonsten würde ich dir dringend zu besseren Namen für die Variablen raten, auch dass macht es leichter Fehler zu entdecken. Aber wie gesagt, nicht falsch auffassen, sind nur Anregungen und (fast?) alle haben mal ähnlichen Code erzeugt.

Gruß Der Unwissende

Sharky 18. Mär 2006 19:13

Re: problem bei checkbox und bedingungen?ausführung falsch
 
Hai delphineuling88,

wie der Unwissende schon sagte solltest Du als erstes einmal einen gutlesbaren Codestyle verwenden. Dadurch wirst Du Fehler viel schneller finden und dein Programm bleibt auch wartbar.

Ausserdem würde ich nicht immer wieder die Text für das Label in einer Zeile setzen. Wenn Du das ganze auf Teilstrings (ts) aufteilst und dann ganz zumm schluss die Caption des Labels setzt ist das alles viel schlanker.

Eine mögliche Lösung wäre zum Beispiel so:
Delphi-Quellcode:
var mmh, meh, a: integer;
  ts1: string;
  ts2: string;
  ts3: string;
  ts4: string;
  ts5: string;
begin
  meh := Random(100) + 1;
  mmh := Random(100) + 1;
  a := Random(100) + 1;
  ts1 := 'Alle ';
  ts2 := 'müssen ';
  ts3 := '';
  ts4 := '';
  ts5 := ' tinken!';
  if (checkbox1.Checked) and (a >= 90) then
  begin
    if RadioButton1.Checked Then
    begin
      if (mmh <= 100) and (mmh > 25) then
      begin
        ts4 := listbox4.Items[random(listbox4.Items.Count)];
        ts5 := listbox2.items[random(listbox2.Items.Count)];
      end
      else
      begin
        ts2 := 'müssen einen Kurzen ';
        ts3 := listbox3.items[random(listbox3.Items.Count)];
      end
    end;
  end;

  label17.Caption:= 'Wer muss Trinken? ' ts1 + ts2 + ts3 + ts4 + ts5;

delphineuling88 18. Mär 2006 19:58

Re: problem bei checkbox und bedingungen?ausführung falsch
 
Juhu vielen vielen dank hab es hinbekommen falls die lösung interessiert danch fragen dann poste ich sie hier!
Jetzt hab ich nur noch zwei probleme kann mir jemand sagen wie die überprüfung dafür aussieht:
und zwar ob das zufällig ausgewählte item der listbox1, gleich dem zweiten zufällig ausgewähltem itmem der listbox1 ist ist habe gerade voll kein plan wie ich das machen soll und dann noch da einbauen

Matze 18. Mär 2006 20:04

Re: problem bei checkbox und bedingungen?ausführung falsch
 
Zitat:

Zitat von delphineuling88
Juhu vielen vielen dank hab es hinbekommen falls die lösung interessiert danch fragen dann poste ich sie hier!

Ich bitte dich, das zukünftig direkt zu posten, ohne erst nachzufragen. ;)

delphineuling88 18. Mär 2006 20:12

Re: problem bei checkbox und bedingungen?ausführung falsch
 
Ok Matze
und kannst du mir vielleicht noch bei der frage davor helfen?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
 var mmh,meh,a:integer;
 begin
   meh:= Random(100) + 1;
   mmh:= Random(100) + 1;
   a:= Random (100)+1;

   If (checkbox1.Checked) and (meh<=90)
    then begin
     If RadioButton1.Checked
      Then begin
       If (mmh <= 100) and (mmh >25)
        Then begin
          label17.Caption:='Wer muss Trinken? ' +'Alle'+ ' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
              end
       else begin
          label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
              end;
              end;
      If RadioButton2.Checked
       Then begin
        If (mmh >= 50)
         Then begin
            label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
         else begin
            label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
            end;
            end;
     If RadioButton3.Checked
      Then begin
       If mmh > 75
       Then begin
          label17.Caption:='Wer muss Trinken? ' + 'Alle'+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
       else begin
          label17.Caption:='Wer muss Trinken? ' + 'Alle' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
            end;
            end;
            end;


   If (checkbox1.Checked=false) or ((meh > 10)and(meh<80))
    then begin
     If RadioButton1.Checked
     Then begin
      If (mmh <= 100) and (mmh >25)
       Then begin
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
      else begin
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
            end;
            end;

    If RadioButton2.Checked
     Then begin
      If (mmh >= 50)
       Then begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
        else begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
             end;
             end;

    If RadioButton3.Checked
      Then begin
       If mmh > 75
        Then begin
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
             end
        else begin
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
              end;
              end;
              end;



   If Checkbox2.Checked
    Then begin
     if meh >= 80
      then begin
       If RadioButton1.Checked
        Then begin
         If (mmh <= 100) and (mmh >25)
          Then begin
              label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
          else begin
               label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
            end;
            end;

      If RadioButton2.Checked
      Then begin
       If (mmh >= 50)
        Then begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
       else begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
            end;
            end;

      If RadioButton3.Checked
      Then begin
       If mmh > 75
        Then begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
        else begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' und '+listbox1.Items[random(listbox1.items.count)]+' müssen einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
             end;
             end;
             end;

   If (checkbox2.Checked=false) or ((meh < 80)and(meh>10))
    then begin
     If RadioButton1.Checked
      Then begin
       If (mmh <= 100) and (mmh >25)
        Then begin
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
           end
        else begin
         label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
           end;
           end;

    If RadioButton2.Checked
     Then begin
      If (mmh >= 50)
       Then begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
            end
       else begin
          label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
            end;
            end;

    If RadioButton3.Checked
      Then begin
       If mmh > 75
        Then begin
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss ' + listbox4.Items[random(listbox4.Items.Count)]+ ' ' + listbox2.items[random(listbox2.Items.Count)]+ ' trinken !'
             end
        else begin
           label17.Caption:='Wer muss Trinken? ' + listbox1.Items[random(listbox1.items.count)]+' muss einen Kurzen ' + listbox3.items[random(listbox3.Items.Count)]+ ' trinken !';
             end;
             end;

 end;
 end;
  end;

Matze 18. Mär 2006 20:16

Re: problem bei checkbox und bedingungen?ausführung falsch
 
Hi,

bitte pro Frage einen eigenen Thread erstellen (Kodex) ;)

Mittels

Delphi-Quellcode:
ListBox1.Items[ListBox1.ItemIndex;
bekommst du den Text des selektierten Eintrags der ersten Listbox, analog dazu natürlich auch den der zweiten und diese Strings musst du nur noch Vergleichen.

Btw: Noch herzlich willkommen!


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