![]() |
Operator ist auf diesen Operandentyp nicht anwendbar!?
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:
Sorry, bin Delphi-Anfänger.
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); |
Re: Operator ist auf diesen Operandentyp nicht anwendbar!?
Hi,
ich denke mal, weil Left einen Integer will, deine Berechnung aber ein Real liefert. Damit müsste noch ein Trunc drumrum... Cu, Frank |
Re: Operator ist auf diesen Operandentyp nicht anwendbar!?
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. |
Re: Operator ist auf diesen Operandentyp nicht anwendbar!?
Zitat:
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:
Delphi-Quellcode:
(round rundet die entstandene Kommazahl, weil Left ja nur ganze Zahlen akzeptiert)
left:=round(8.5 / 50 -(width div 2));
edit: Hä, weiso war da kein Kasten o.O? |
Re: Operator ist auf diesen Operandentyp nicht anwendbar!?
Zitat:
Sinn würde das nur machen, wenn du nicht width div 2, sondern width/2 teilen würdest. |
Re: Operator ist auf diesen Operandentyp nicht anwendbar!?
Zitat:
|
Re: Operator ist auf diesen Operandentyp nicht anwendbar!?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 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-2025 by Thomas Breitkreuz