AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi problem bei checkbox und bedingungen?ausführung falsch

problem bei checkbox und bedingungen?ausführung falsch

Ein Thema von delphineuling88 · begonnen am 18. Mär 2006 · letzter Beitrag vom 18. Mär 2006
Antwort Antwort
delphineuling88

Registriert seit: 18. Mär 2006
23 Beiträge
 
#1

problem bei checkbox und bedingungen?ausführung falsch

  Alt 18. Mär 2006, 19:28
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
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

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

  Alt 18. Mär 2006, 20:05
Hi, und herzlich willkommen in der Delphi Praxis

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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

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

  Alt 18. Mär 2006, 20:13
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
delphineuling88

Registriert seit: 18. Mär 2006
23 Beiträge
 
#4

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

  Alt 18. Mär 2006, 20:58
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

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

  Alt 18. Mär 2006, 21:04
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.
  Mit Zitat antworten Zitat
delphineuling88

Registriert seit: 18. Mär 2006
23 Beiträge
 
#6

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

  Alt 18. Mär 2006, 21:12
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;
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

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

  Alt 18. Mär 2006, 21:16
Hi,

bitte pro Frage einen eigenen Thread erstellen (Kodex)

Mittels

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!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:36 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