AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Operator ist auf diesen Operandentyp nicht anwendbar!?
Thema durchsuchen
Ansicht
Themen-Optionen

Operator ist auf diesen Operandentyp nicht anwendbar!?

Ein Thema von condor · begonnen am 26. Okt 2006 · letzter Beitrag vom 27. Okt 2006
Antwort Antwort
condor

Registriert seit: 24. Okt 2006
27 Beiträge
 
#1

Operator ist auf diesen Operandentyp nicht anwendbar!?

  Alt 26. Okt 2006, 16:30
wieso erhalte ich beim Compilieren unter anderem den Fehler: "Operator ist auf diesen Operandentyp nicht anwendbar" ? Damit meint der Compiler die letzte Zeile



Delphi-Quellcode:
procedure TPTurm.setsize(mysize:word);
   var raster:word;
       I:word;
       begin
       Fsize:=mysize;
       width:=mysize;
       raster:=mysize div 50;
       height:=14*raster*mysize;
       for I := 0 to valu-1 do begin
        with steine[i] do begin
          ...
          width:=raster*(i+3);
          left:=8.5 div 50 -(width div 2);
Sorry, bin Delphi-Anfänger.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Operator ist auf diesen Operandentyp nicht anwendbar!?

  Alt 26. Okt 2006, 16:33
Hi,

ich denke mal, weil Left einen Integer will, deine Berechnung aber ein Real liefert.
Damit müsste noch ein Trunc drumrum...

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Operator ist auf diesen Operandentyp nicht anwendbar!?

  Alt 26. Okt 2006, 16:34
Weil du auf einem Gleitkommatypen keine Ganzzahldivision ausführen kannst. Ersetze das erste div duch ein /.

Danach musst du noch mit einer der unzähligen Rundungsfunktionen das ganze zu einem Integer konvertieren.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Operator ist auf diesen Operandentyp nicht anwendbar!?

  Alt 26. Okt 2006, 16:35
Zitat von condor:
left:=8.5 div 50 -(width div 2);
Du musst unterscheiden zwischen Gleitkommazahlen und ganzen Zahlen.
Left und Width z.b. sind ganze Zahlen. 8.5 ist eine Kommazahl.

Div funktioniert nur mit ganzen Zahlen. Für gleitkommazahlen musst du / benutzen.
Richtig wäre es so:
left:=round(8.5 / 50 -(width div 2)); (round rundet die entstandene Kommazahl, weil Left ja nur ganze Zahlen akzeptiert)

edit: Hä, weiso war da kein Kasten o.O?
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Operator ist auf diesen Operandentyp nicht anwendbar!?

  Alt 26. Okt 2006, 18:42
Zitat von NamenLozer:
left:=round(8.5 / 50 -(width div 2));
8,5/50 wird aber durch Round immer auf 1 gerundet, bei Trunc wär es 0. Man könnte also sofort 1 oder 0 schreiben.
Sinn würde das nur machen, wenn du nicht width div 2, sondern width/2 teilen würdest.
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Operator ist auf diesen Operandentyp nicht anwendbar!?

  Alt 27. Okt 2006, 17:50
Zitat von Cöster:
8,5/50 wird aber durch Round immer auf 1 gerundet.
nein, auf 0
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Operator ist auf diesen Operandentyp nicht anwendbar!?

  Alt 27. Okt 2006, 20:34
Zitat von Amateurprofi:
Zitat von Cöster:
8,5/50 wird aber durch Round immer auf 1 gerundet.
nein, auf 0
Jo, hast Recht, da hab ich nen Fehler gemacht. Ich dachte immer, Round rundet AUF und Trunc AB. Aber Round rundet immer korrekt, bei Komma 5 auf die gerade Zahl. Trunc immer ab, bei negativen Zahlen auf.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 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