Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#21

Re: if ... or ... else - Anwendungen

  Alt 2. Jan 2004, 11:53
Nachtrag:

Ich weiß nicht, ob´s der Fehler ist, aber du hast einen Dreher drin: In deinem Posting auf Seite 1 prüfst du zuerst die Kurse Deutsch, Englisch und Mathe, und dann noch mal Deutsch, Physik, Chemie und Bio.
In deinem angehangenen Programm (auch zu sehen in der geposteten Unit) prüfst du zuerst Deutsch, Physik, Chemie und Bio, und dann Deutsch, Englisch und Mathe.

Vielleicht macht´s auch keinen Unterschied ... ... Aber wenn ich davon ausgehe, dass der Code auf Seite 1 richtig ist, dann müsste deine Bedingung mit den Hilfsvariablen eigentlich so aussehen:
Delphi-Quellcode:
if ue11_2 then
begin
  if ue11_1k then
  begin
    if ue11_1n then
    begin
      if ue11_3 then
      begin
        if (gesamt<=52) then
        begin
          ue11.visible:=true;
        end;
      end;
    end;
  end;
end
oder kürzer:
Delphi-Quellcode:
if ue11_2 then
begin
  ue11.Visible := (ue11_1k) and (ue11_1n) and (ue11_3) and (gesamt <= 52);
end
Und dann hast du trotzdem noch eine Bedingungsprüfung mit einem Haufen ANDs und ORs:
Delphi-Quellcode:
if(deutsch_n<=4) and (deutsch_k='e') and (englisch_n<=4) and
  (englisch_k='a') and (mathematik_n<=4) and (mathematik_k='a') and
  (physik_n<=4) and (physik_k='e') and (chemie_n<=4) and
  (chemie_k='e') and (biologie_n<=4) and (biologie_k='e') and
  (franz_n<=4) and (franz_k='a') and (relligion_n<=4) and
  (gl_n<=4) and (bwu_n<=4) and (sport_n<=4) and (kunst_n<=4) and
  (musik_n<=4) and (latein_n<=4) and (wpu4_n<=4) and (wpu2_n<=4) then
begin
  rsa.visible:=true;
end else begin
  if(deutsch_n<=4) and (englisch_n<=4) and (mathematik_n<=4) and
    (physik_n<=4) and (chemie_n<=4) and (biologie_n<=4) and
    (franz_n<=4) and (relligion_n<=4) and (gl_n<=4) and
    (bwu_n<=4) and (sport_n<=4) and (kunst_n<=4) and
    (musik_n<=4) and (latein_n<=4) and (wpu4_n<=4) and (wpu2_n<=4) then
Siehst du auch, was ich sehe? Die Noten sind alle <= 4, in der oberen Bedingung prüfst du lediglich noch ein paar Kurse. Also, kürzen:
Code:
WasIsnDas2 := (deutsch_n<=4) [b]and[/b] (englisch_n<=4) [b]and[/b]
  (mathematik_n<=4) [b]and[/b] (physik_n<=4) [b]and[/b] (chemie_n<=4) [b]and[/b]
  (biologie_n<=4) [b]and[/b] (franz_n<=4) [b]and[/b] (religion_n<=4) [b]and[/b] (gl_n<=4) [b]and[/b]
  (bwu_n<=4) [b]and[/b] (sport_n<=4) [b]and[/b] (kunst_n<=4) [b]and[/b] (musik_n<=4) [b]and[/b]
  (latein_n<=4) [b]and[/b] (wpu4_n<=4) [b]and[/b] (wpu2_n<=4);

WasIsnDas1 := [color=#ff0000](WasIsnDas2)[/color] [b]and[/b] (deutsch_k='e') [b]and[/b] (englisch_k='a') [b]and[/b]
  (mathematik_k='a') [b]and[/b] (physik_k='e') [b]and[/b] (chemie_k='e') [b]and[/b]
  (biologie_k='e') [b]and[/b] (franz_k='a');
Und damit sieht´s bloß noch so aus:
Delphi-Quellcode:
if WasIsnDas1 then begin
  rsa.Visible := true
end else begin
  if WasIsnDas2 then
Wenn das alles deine Probleme nicht löst, dann solltest du noch mal in diesen Dokumenten nachschauen, ob du die Berechnungen wirklich richtig übernommen hast.

Ein Wort noch zu den "OnChange"-Ereignissen deiner Scrollbars. Du hast im Objektinspektor den Bereich der Scrollbars von 1 bis 6 festgelegt. Es besteht daher eigentlich keine Notwendigkeit, diesen Bereich in den "OnChange"-Ereignissen noch mal festzulegen - es sei denn, der Bereich wird irgendwo im Programm geändert; was bei dir allerdings nicht der Fall ist.

Und ein simples
Code:
[b]if[/b] CB_Franz.checked[color=#ff0000][s]=true[/s][/color] [b]then[/b]
genügt ebenfalls.

Und zu guter Letzt: Ein Label würde auch genügen. Je nach erfüllter Bedingung könntest du es beschriften:
Delphi-Quellcode:
if(Irgendeine_Bedingung) then
  Label1.Caption := 'Irgendeine Bedingung ist erfüllt'
else
  Label1.Caption := 'Irgendeine andere Bedingung ist erfüllt'
Dann brauchst du nicht mit dem Verstecken und Anzeigen der verschiedenen Labels hantieren.
  Mit Zitat antworten Zitat