AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

syntax Verzweigung If Then

Ein Thema von d6lpz · begonnen am 2. Apr 2008 · letzter Beitrag vom 2. Apr 2008
Antwort Antwort
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#1

syntax Verzweigung If Then

  Alt 2. Apr 2008, 17:24
Hallo,

Habe eine Frage zu IF Then usw.
Folgende Struktur bekomme ich nicht hin:
Delphi-Quellcode:
procedure TMain.UpdateForm;
begin
        if group_ok =0 then // keine Auswahl erfolgt
        begin
                        lab_selectedGroup.Caption:=' ';
                        lab_selectedGroup.Visible:=False;
                        lab_selectedEmpl.Caption:=' ';
                        lab_selectedEmpl.Visible:=False;
                        sbtn_yearreport.Enabled:=False;
                        sbtn_monthreport.Enabled:=False;

                        empl_ok:=0;
                        year_ok:=0;
                        month_ok:=0;
        end
        else if group_ok=1 and if empl_ok=0 then // Group Auswahl erfolgt - Empl Auswahl noch nicht
        begin
                        lab_selectedGroup.Caption:=' ';
                        lab_selectedGroup.Caption:=DBLLBox_FilteredUserRights.SelectedItem;
                        lab_selectedGroup.Visible:=True;
                        lab_selectedEmpl.Caption:=' ';
                        lab_selectedEmpl.Visible:=True;
                        if year_ok=1 and if month_ok=1 then
                        begin
                            sbtn_yearreport.Enabled:=False;
                            sbtn_monthreport.Enabled:=True;
                        end
                        else if year_ok=0 then
                        begin
                            sbtn_yearreport.Enabled:=False;
                            sbtn_monthreport.Enabled:=False;

         end
         else if group_ok=1 and if empl_ok=1 then // Group/Empl Auswahl erfolgt
         begin
                       lab_selectedGroup.Caption:=' ';
                       lab_selectedGroup.Caption:=DBLLBox_FilteredUserRights.SelectedItem;
                       lab_selectedGroup.Visible:=True;
                       lab_selectedEmpl.Caption:=' ';
                       lab_selectedEmpl.Caption:=lb_name.SelectedItem;
                       lab_selectedEmpl.Visible:=True;
                       if year_ok=1 and if month_ok=1 then
                       begin
                           sbtn_yearreport.Enabled:=True;
                           sbtn_monthreport.Enabled:=True;
                       end
                       else if year_ok =0 or if month_ok =0 then
                       begin
                           sbtn_yearreport.Enabled:=False;
                           sbtn_monthreport.Enabled:=False;

         end; <<<<<=== !! Hier bekomme ich Operator ist auf Operandentyp nicht anwendbar

end;
year_ok / month_ok / group_ok / empl_ok sind global als integer variablen deklariert

Kann mir irgendjemand helfen??
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 17:25
Hi,

Struktur:

Delphi-Quellcode:
if <Bedingung1> then
else
if (<Bedingung2>) and (<Begingung3>) then
...
Würde sich eine bool'sche Variable nicht mehr anbieten? Ich sehe Du überprüft nur auf 0 und 1.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 17:28
Du hast eine IF Anweisung, welche den Teil nach dem Then ausführt, wenn die Bedingung zwischen IF und THEN wahr ergibt. Wenn du dazwischen nun aber schreibst "group_ok=1 and if empl_ok=1" dann fehlt ganz offensichtlich ein Then zu dem If in dieser Bedingung. Und somit kann dieses Konstrukt nicht sein, da IF nichts auswertbares ergibt sondern selber auswertet. Somit kann es nicht sein, dass das IF dort richtig ist.

Du kannst mit AND, OR, XOR, etc logisch auswertbare Bedingungen verknüpfen, dann musst du aber diese Klammern, weil sonst würde Delphi die nicht mehr mit AND, OR bzw. XOR logisch verknüpfen sondern binär.

Somit für das o.g. Beispiel:

if (group_ok=1) and (empl_ok=1) then
  Mit Zitat antworten Zitat
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#4

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 17:37
Zitat von Muetze1:
Du hast eine IF Anweisung, welche den Teil nach dem Then ausführt, wenn die Bedingung zwischen IF und THEN wahr ergibt. Wenn du dazwischen nun aber schreibst "group_ok=1 and if empl_ok=1" dann fehlt ganz offensichtlich ein Then zu dem If in dieser Bedingung. Und somit kann dieses Konstrukt nicht sein, da IF nichts auswertbares ergibt sondern selber auswertet. Somit kann es nicht sein, dass das IF dort richtig ist.

Du kannst mit AND, OR, XOR, etc logisch auswertbare Bedingungen verknüpfen, dann musst du aber diese Klammern, weil sonst würde Delphi die nicht mehr mit AND, OR bzw. XOR logisch verknüpfen sondern binär.

Somit für das o.g. Beispiel:

if (group_ok=1) and (empl_ok=1) then
Ich habe das jetzt alles in Klammern gesetzt aber die Meldung kommt immer noch.

Ich habe versucht deinen Hinweis zu vertehen, allerdings komme ich nicht mit wie du das meinst.
Kannst du mir noch mal die Stelle genauer zeigen?

Ich habe doch zu jedem If ein Then
Oder meinst du die And If und Or If Stellen?
Dirk
  Mit Zitat antworten Zitat
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#5

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 17:39
Zitat von Die Muhkuh:
Hi,

Struktur:

Delphi-Quellcode:
if <Bedingung1> then
else
if (<Bedingung2>) and (<Begingung3>) then
...
Würde sich eine bool'sche Variable nicht mehr anbieten? Ich sehe Du überprüft nur auf 0 und 1.
Danke, ich habe jetzt geklammert.

PS : Ich wußte am Anfang noch nicht ob es nicht vielleicht doch 2 oder 3 sein muß.

Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 17:46
Zitat von d6lpz:
Ich habe doch zu jedem If ein Then
Oder meinst du die And If und Or If Stellen?
Das:if year_ok=1 and if month_ok=1 then muss zum Beispiel so aussehen:if (year_ok=1) and (month_ok=1) then Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 17:58
Ich würde entweder Bool' sche Variablen oder case verwenden.
Delphi-Quellcode:
case group_ok of
  0: begin
       //Code
     end;
  1: begin
       case emp_ok of
         0: begin
              //Code
            end;
         1: begin
              //Code
            end;
       end;
     end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#8

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 18:28
case bietet sich in der Tat an. Mir will aber auch scheinen, dass in deinen if-Schleifen die den begins auf Zeile 29 bzw 47 korrespondierenden ends fehlen.
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#9

Re: syntax Verzweigung If Then

  Alt 2. Apr 2008, 23:27
Zitat von d6lpz:
Zitat von Muetze1:
Du hast eine IF Anweisung, welche den Teil nach dem Then ausführt, wenn die Bedingung zwischen IF und THEN wahr ergibt. Wenn du dazwischen nun aber schreibst "group_ok=1 and if empl_ok=1" dann fehlt ganz offensichtlich ein Then zu dem If in dieser Bedingung. Und somit kann dieses Konstrukt nicht sein, da IF nichts auswertbares ergibt sondern selber auswertet. Somit kann es nicht sein, dass das IF dort richtig ist.

Du kannst mit AND, OR, XOR, etc logisch auswertbare Bedingungen verknüpfen, dann musst du aber diese Klammern, weil sonst würde Delphi die nicht mehr mit AND, OR bzw. XOR logisch verknüpfen sondern binär.

Somit für das o.g. Beispiel:

if (group_ok=1) and (empl_ok=1) then
Ich habe das jetzt alles in Klammern gesetzt aber die Meldung kommt immer noch.

Ich habe versucht deinen Hinweis zu vertehen, allerdings komme ich nicht mit wie du das meinst.
Kannst du mir noch mal die Stelle genauer zeigen?

Ich habe doch zu jedem If ein Then
Oder meinst du die And If und Or If Stellen?
Dirk
Wer lesen kann ist eindeutig im Vorteil...

Natürlich hattest Du recht Muetze1 !

Ich hatte es nur nicht richtig gelesen. Nach dem Entfernen der If's geht es - Danke!!
Danke an alle für ihre Tips !! (Case ist sicher die elegantere Methode)
Dirk
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:42 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