Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fehler : Operator auf diesem Operandentyp nicht anwendbar (https://www.delphipraxis.net/174749-fehler-operator-auf-diesem-operandentyp-nicht-anwendbar.html)

ThaiSon96 7. Mai 2013 15:56

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

DeddyH 7. Mai 2013 15:57

AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
 
Zu wenig Klammern.
Delphi-Quellcode:
if (Bedingung1) or (Bedingung2) then
wobei die Bedingungen auch Vergleiche sein können.

[edit] Sry, Willkommen in der DP :dp: [/edit]

Gloegg_FHBI 7. Mai 2013 15:59

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.

ThaiSon96 7. Mai 2013 16:01

AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
 
Zitat:

Zitat von DeddyH (Beitrag 1214585)
Zu wenig Klammern.

Wo kommen denn sonst noch Klammern hin? Hab bitte Nachsicht, bin Anfänger...

---

Hat sich erledigt!

ThaiSon96 7. Mai 2013 16:05

AW: Fehler : Operator auf diesem Operandentyp nicht anwendbar
 
Habe deinen rat befolgt, jedoch wird immernoch derselbe Fehler angezeigt...


Zitat:

Zitat von Gloegg_FHBI (Beitrag 1214586)
PS: Bitte benutze die Delphi-Tags, wenn du Quellcode postest.

Was sind Delphi-Tags?

Der schöne Günther 7. Mai 2013 16:06

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:
if ((zahl mod 3)=0) OR ((zahl mod 7)=0) then [...]
lauten. Anderes Beispiel:
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).

DeddyH 7. Mai 2013 17:29

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