Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Operator ist auf diesen Operandentyp nicht anwendbar (https://www.delphipraxis.net/106997-operator-ist-auf-diesen-operandentyp-nicht-anwendbar.html)

Avicenna 20. Jan 2008 15:23


Operator ist auf diesen Operandentyp nicht anwendbar
 
Hallo,
folgender Fehler bringt mich noch zum Verzweifeln:

Zitat:

[Fehler] Unit1.pas(173): Operator ist auf diesen Operandentyp nicht anwendbar
Delphi-Quellcode:
  kreuz2.verschieben(posx-groesse div 10+round((sqrt(power(groesse div 10,2)-(power(groesse div 5,2)))div 2),posy-groesse+(round((sqrt(power(groesse div 10,2)-power(groesse div 5,2)div 2)));
kreuz2.groesseAendern(posx-groesse div 10-((sqrt(power(groesse div 10,2)-power(groesse div 5,2)div 2),posy-groesse+((sqrt(power(groesse div 10,2)-power(groesse div 5,2))div 2))- groesse div 50);
Der Fehler kommt in diesen zwei Zweilen bereits 4mal vor.

Was kann ich dagegen tun?

Vielen Dank!

SirThornberry 20. Jan 2008 15:25

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
sowas geht nicht:
Delphi-Quellcode:
groesse div 10,2
div geht nur für Ganzzahlen. Zudem gibt es 10,2 nicht sondern nur 10.2

dominikkv 20. Jan 2008 15:27

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
Zitat:

Zitat von SirThornberry
sowas geht nicht:
Delphi-Quellcode:
groesse div 10,2
div geht nur für Ganzzahlen. Zudem gibt es 10,2 nicht sondern nur 10.2

das sind eigendlich die parameter für power xD

Avicenna 20. Jan 2008 15:27

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
Aber meiner Internet-Recherche kann man so in Delphi Hochzahlen realisieren:

Zitat:

power(basis,exponenet);
Wobei math in die units aufgenommen werden muss.

EDIT: Wie dominikkv gerade geschrieben hat :)


Wo liegt denn dann der Fehler?

DGL-luke 20. Jan 2008 15:28

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
x div 10.2 lässt sich umschreiben als:

"x * 10 div 102"

wird aber dann immernoch n ganzzahliges ergebnis haben...

Avicenna 20. Jan 2008 15:31

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
Zitat:

Zitat von DGL-luke
x div 10.2 lässt sich umschreiben als:

"x * 10 div 102"

wird aber dann immernoch n ganzzahliges ergebnis haben...

Ich glaube, du hast denselben Fehler gemacht wie SirThornberry, oder verstehe ich das jetzt falsch? Es handelt sich ja nicht um 10,2 sondern um 10²

himitsu 20. Jan 2008 15:36

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
und welchen Typen haben die Variablen?

es wäre auch bestimmt gut (übersichtlicher), wenn du diese Rechnung etwas aufteils.
außerdem wird einiges mehrmals berechnet ... einmal reicht ja :angel:


[quote="Avicenna"]Hallo,
folgender Fehler bringt mich noch zum Verzweifeln:

Zitat:

[Fehler] Unit1.pas(173): Operator ist auf diesen Operandentyp nicht anwendbar
in etwa so (falls ich keinen Fehler gemacht hab)
Code:
[s]G5 := groesse / 5.2;
G10 := groesse / 10.2;
P5 := power(G5);
P10 := power(G10);
S2 := sqrt(P10-P5) / 2;

kreuz2.verschieben(round(posx-groesse / 2 + S2),round(posy-groesse+S2));
kreuz2.groesseAendern(round(posx-groesse / 10-S2),round(posy-groesse - groesse / 50+S2));[/s]
Delphi-Quellcode:
P5 := power(groesse div 5, 2);
P10 := power(groesse div 10, 2);
S2 := sqrt(P10-P5) / 2;

kreuz2.verschieben(round(posx-groesse div 2 + S2),round(posy-groesse+S2));
kreuz2.groesseAendern(round(posx-groesse div 10-S2),round(posy-groesse - groesse div 50+S2));
aber sowas passiert nicht/weniger, wenn man ein bissl an Codeformatierung denkt und nicht immer alles zusammenfasst.

dominikkv 20. Jan 2008 15:49

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
wenn man das mal so schreibt:
Delphi-Quellcode:
kreuz2.verschieben(
                   posx - groesse div 10 + round(
                                                 (
                                                  sqrt(
                                                       power(
                                                             groesse div 10, 2
                                                            ) - (
                                                                 power(
                                                                       groesse div 5, 2
                                                                      )
                                                                )
                                                      ) div 2
                                                 ),

                   posy - groesse + (
                                     round(
                                           (
                                            sqrt(
                                                 power(
                                                       groesse div 10, 2
                                                      ) - power(
                                                                groesse div 5,2
                                                               ) div 2
                                                )
                                           )
                                          );
sieht man das du sqrt() div 2 machst und das du eine klammer zu vergessen hast (bzw eine klammer zu viel auf nach dem ersten round)

Avicenna 20. Jan 2008 16:05

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank für eire Mühe!
Die Syntaxerrors konnte ich beseitgen, nun kommen aber die schlimmen Fehler: Fehlermeldungen, die das Programm zum Abstürzen bringen (siehe Anhang).

Was kann ich dagegen tun?

Gruß,
Avicenna

dominikkv 20. Jan 2008 16:13

Re: Operator ist auf diesen Operandentyp nicht anwendbar
 
wie sieht jetzt dein quältext aus?
an welcher stelle kommt der fehler?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr.
Seite 1 von 2  1 2      

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