Delphi-Version: 7
Fehler : Operator auf diesem Operandentyp nicht anwendbar
Hallo,
ich möchte eine Formularanwendung erstellen. Beim Klick auf einen Button soll von 0 aus immer 1 addiert werden (die Zahl wird mit einem Label angezeigt). Wenn die Zahl durch 3 oder 7 teilbar ist, soll ein Fehler im Label angezeigt werden (z.b. 'MÖÖÖP!'). Ich hab mir das so überlegt (die Variable "zahl" ist real und der Wert 0 wird vorher zugewiesen): procedure TForm1.Button1Click(Sender: TObject); begin zahl := zahl + 1; if (zahl mod 3)=0 OR (zahl mod 7)=0 then label1.Caption := 'MÖÖÖP!' else ... end; Nun zeigt er mir in der Zeile 'if (zahl mod 3)=0 OR (zahl mod 7)=0 then' einen Fehler an: Operator ist auf diesen Operandertyp nicht anwendbar. Hat jemand eine Lösung? Die Zahl muss ja eigentlich integer sein, um angezeigt werden zu können. Brauche Hilfe, bin ziemlich unerfahren mit Pascal. Danke im Voraus |
AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
Zu wenig Klammern.
Delphi-Quellcode:
wobei die Bedingungen auch Vergleiche sein können.
if (Bedingung1) or (Bedingung2) then
[edit] Sry, Willkommen in der DP :dp: [/edit] |
AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
das OR hat eine stärkere Bindung als das =
du musst also nur die Klammern anders setzen:
Delphi-Quellcode:
if (zahl mod 3 = 0) OR (zahl mod 7 = 0) then
Hier ist die Rangfolge der Operatoren erklärt: wikibooks PS: Bitte benutze die Delphi-Tags, wenn du Quellcode postest. |
AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
Zitat:
--- Hat sich erledigt! |
AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
Habe deinen rat befolgt, jedoch wird immernoch derselbe Fehler angezeigt...
Zitat:
|
AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
Ich würde das mit dem Möööp nochmal überdenken :-D
Ich bin auch noch nicht allzu lange in Delphi dabei und den Fehler mit den Klammern mache ich auch immer wieder. In anderen Sprachen ist die Bindung anders, da kann man sich die zusätzlichen Klammern sparen... Richtigerweise muss es bei dir
Delphi-Quellcode:
lauten. Anderes Beispiel:
if ((zahl mod 3)=0) OR ((zahl mod 7)=0) then [...]
Delphi-Quellcode:
if ((Bedingung1) or (Bedingung2)) and (Bedingung 3)) then [...]
PS: Was wir bislang alle übersehen haben ist die Tatsache, dass man mit Fließkommazahlen schlecht Modulo rechnen kann. Also musst du deine Zahl in eine normale Ganzzahl ändern (z.B. Integer statt Real). |
AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
Siehste, das kommt davon, wenn keine Delphi-Tags gesetzt sind, sonst hätten wir das MOD gleich bemerkt :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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