![]() |
syntax Verzweigung If Then
Hallo,
Habe eine Frage zu IF Then usw. Folgende Struktur bekomme ich nicht hin:
Delphi-Quellcode:
year_ok / month_ok / group_ok / empl_ok sind global als integer variablen deklariert
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; Kann mir irgendjemand helfen?? Dirk |
Re: syntax Verzweigung If Then
Hi,
Struktur:
Delphi-Quellcode:
Würde sich eine bool'sche Variable nicht mehr anbieten? Ich sehe Du überprüft nur auf 0 und 1.
if <Bedingung1> then
else if (<Bedingung2>) and (<Begingung3>) then ... |
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
|
Re: syntax Verzweigung If Then
Zitat:
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 |
Re: syntax Verzweigung If Then
Zitat:
PS : Ich wußte am Anfang noch nicht ob es nicht vielleicht doch 2 oder 3 sein muß. Dirk |
Re: syntax Verzweigung If Then
Zitat:
Delphi-Quellcode:
muss zum Beispiel so aussehen:
if year_ok=1 and if month_ok=1 then
Delphi-Quellcode:
Mfg
if (year_ok=1) and (month_ok=1) then
|
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; |
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.
|
Re: syntax Verzweigung If Then
Zitat:
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