Autor Beitrag
Da_Knuddelbaer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Fr 28.02.03 10:21 
Ich bins nochmal :P
Ich will die Koordinaten eines Sprites verändern. Beispielsweise lege ich im quellcode fest:

ausblenden Quelltext
1:
2:
X := Self.X;
Y := Self.Y;


Jetzt will ich das aber nicht, sondern ich will zu jedem X und Y den Wert Self.X per div 30 berechnen und dann mit 30 multiplizieren. Wenn ich das jedoch mache (auch mit zusätzlichen Variablen), dann sagt mir Delphi

Zitat:
Operator ist auf diesen Operandentyp nicht anwendbar


Wie behebe ich das Problem? Ich weiss dass Self.X und Self.Y jeweils vom Typ Double sind. Also ich müsste irgendwie von Double zu Integer und zurück konvertieren können um "div" anwenden zu können.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 28.02.03 12:14 
Hi,

da x und y vom typ double sind, brauchst du div nicht benutzen, da dies keine integer sind. mach es mit ganz normalen operatoren:

x := x/30*30 ; // <- das macht doch keinen sinn

...hä?
Da_Knuddelbaer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Fr 28.02.03 13:17 
Titel: dochdoch, der Sinn ist schon noch vorhanden
hallo maximus,
DIV ist nicht das gleiche wie das normale dividieren. Div gibt beispielsweise bei 32 div 30 den Wert 1 zurück. Der Rest wird abgeschnitten. Anders ist das bei dem Befehl MOD, da wird der Rest wiedergegeben.
Wenn ich also einen Sprite bei den Koordinaten 32 | 94 hinsetze, dann erhalte ich über meine Rechnung (per DIV-Befehl)

32 div 30=1; 1*30=30=X
94 div 30=3; 3*30=90=Y

dadurch erreiche ich dass der sprite exakt in einem Feld erstellt wird und nicht scheps daneben.

Knuddelbaer
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 28.02.03 13:59 
Schon klar! Hatte ich mir auch schon gedacht, dass du ein raster erstellen willst. Hat mich nur stutzig gemacht, weil ich erstma das operator problem beantwortet habe :)

was spricht gegen x := (trunc(x) div 30)*30 ?

mfg mx.
Da_Knuddelbaer Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 485



BeitragVerfasst: Fr 28.02.03 14:45 
Ich denke genau den befehl habe ich gesucht :)
oh oh oh, sowas sollte man aber eigentlich wissen...

Thx!