Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi syntax Verzweigung If Then (https://www.delphipraxis.net/111388-syntax-verzweigung-if-then.html)

d6lpz 2. Apr 2008 18:24


syntax Verzweigung If Then
 
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

Die Muhkuh 2. Apr 2008 18:25

Re: syntax Verzweigung If Then
 
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.

Muetze1 2. Apr 2008 18:28

Re: syntax Verzweigung If Then
 
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:

Delphi-Quellcode:
if (group_ok=1) and (empl_ok=1) then

d6lpz 2. Apr 2008 18:37

Re: syntax Verzweigung If Then
 
Zitat:

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:

Delphi-Quellcode:
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 :gruebel:
Oder meinst du die And If und Or If Stellen?
Dirk

d6lpz 2. Apr 2008 18:39

Re: syntax Verzweigung If Then
 
Zitat:

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

Fussball-Robby 2. Apr 2008 18:46

Re: syntax Verzweigung If Then
 
Zitat:

Zitat von d6lpz
Ich habe doch zu jedem If ein Then :gruebel:
Oder meinst du die And If und Or If Stellen?

Das:
Delphi-Quellcode:
if year_ok=1 and if month_ok=1 then
muss zum Beispiel so aussehen:
Delphi-Quellcode:
if (year_ok=1) and (month_ok=1) then
Mfg

DeddyH 2. Apr 2008 18:58

Re: syntax Verzweigung If Then
 
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;

Peinhard 2. Apr 2008 19:28

Re: syntax Verzweigung If Then
 
case bietet sich in der Tat an. Mir will aber auch scheinen, dass in deinen if-Schleifen :mrgreen: die den begins auf Zeile 29 bzw 47 korrespondierenden ends fehlen.

d6lpz 3. Apr 2008 00:27

Re: syntax Verzweigung If Then
 
Zitat:

Zitat von d6lpz
Zitat:

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:

Delphi-Quellcode:
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 :gruebel:
Oder meinst du die And If und Or If Stellen?
Dirk

Wer lesen kann ist eindeutig im Vorteil... :wall:

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz