![]() |
Incompatible types: 'Integer' and 'Extended' (??????)
Ich muss für unseren Informatik-Unterricht ein Programm schreiben, und benutze darin eine "SpinEdit"-Komponente...
Für eine Berechnung muss ich den Wert der "spinEdit" durch 2 teilen, krieg das aber irgendwie partout nicht hin... :roll: :roll:
Delphi-Quellcode:
Variable ist registriert...
xspin:=spinEdit.Value/2;
spinEdit heißt wirklich spinEdit und nicht etwa spinEdit1 insofern müsste eigentlich alles klappen... Aber wegen dem "/2" bringt er folgende Fehlermeldung:
Delphi-Quellcode:
Ich hab jetzt ewig lang rumprobiert, bin aber zu keinem Ergebnis gekommen...
Incompatible types: 'Integer' and 'Extended'
Was ist da falsch????? |
Re: Bin am verzweifeln....
Ändere bitte den Titel, so dass er das Problem anreißt. Danke.
...:cat:... |
Re: Bin am verzweifeln....
Hallo erstmal,
dein problem dabei ist, dass du einen Fließkommawert vermutlich in einen Integer schreiben möchtest. Entweder teilst du deinen Wert mit "Wert div 2" oder rundest das Ergebnis mit Round(Wert / 2). |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
klappt leider immernochnicht ganz....
weder mit
Delphi-Quellcode:
noch mit
xspin:=round(spinEdit.Value/2);
yspin:=round(spinEdit.Value/2); image1.Canvas.Rectangle(x,y,xspin+x,yspin+y);
Delphi-Quellcode:
xspin:=spinEdit.Value div 2;
yspin:=spinEdit.Value div 2; image1.Canvas.Rectangle(x,y,xspin+x,yspin+y); erhalte ich ein rechteck der "richtigen" Größe... folgendes Problem, weshalb ich den spinEdit-Wert durch 2 teilen will: wenn ich ein rechteck der größe 10 (also 10x10 Pixel) gezeichnet haben will, dann krieg ich mit folgender Funktion ein Rechteck der Größe 20x20... Fragt mich aber nicht wieso... ^^
Delphi-Quellcode:
image1.Canvas.Rectangle(x,y,x+spinEdit.Value,y+spinEdit.Value);
wenn ichs jetzt mit den zwei Funktionen oben ausprobiere, dann ist das rechteck zumindest schonmal kleiner (ca. 14x14), aber nicht 10x10 Pixel groß... |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
Jetzt sollte dir was auffallen.
Code:
Image1.Canvas.Rectangle(3, 3, 13, 13);
|
Re: Incompatible types: 'Integer' and 'Extended' (??????)
@bigg: was soll mir dardan jetzt auffallen? :roll:
hab gestern n och n kumpel gefragt, der konnt mir aber auch net unbedingt weiterhelfen... hier mal auszugsweise unser gespräch: Zitat:
mit round() klappt des ganze zwar einigermaßen, allerdings ist der punkt dann immernoch größer als er sein soll... ich weiß ja auch warums so ist (wegen der rundung... z.B. 3 wird eben auf 2 gerunden, und dann entsteht damit natürlich ein anderes rechteck als mit "1,5"), weiß aber keine lösung dafür.... vielleicht kann auch jemand mal beim ursprung des problems nachhelfen: Zitat:
|
Re: Incompatible types: 'Integer' and 'Extended' (??????)
Welchen Punkt meinst du denn ?
Es gibt viele Punkte im Rechteck. Um dein Problem zu lösen, kann man die Verhältnisse ihren Umständen anpassen. Einen halben punkt kannst du ja nicht zeichnen. Stell dir vor du musst eine Karte einer Stadt zeichnen. Ich welchem Maßstab würdest du sie zeichnen ? 1:1 ? 1:2? Dein eigentliches Problem kenne ich trotzdem noch nicht? |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
Hi
Ich habe ein ähnliches Problem. Ich möchte eine Variable vom Typ Integer minus eine Zahl rechnen. Wenn ich den Quelltext eingegeben habe und kompiliere, dann kommt nur noch die Fehlermeldung, dass Integer und Extended inkompatible Typen sind. Kann mir jemand helfen? |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
Liste der Anhänge anzeigen (Anzahl: 1)
@BenniKay:
Das ist normal, da Integer nur ganze Zahlen berechnen kann. Extended berechnet auch Fließkomma-Werte bis zwanzig Stellen hinter dem Komma. Schau dir mal das Beispiel an und ließ dir die Kommentare durch. Hinzugefügt habe ich noch ein Tut über Datentypen im PDF-Format. |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
@bigg:
ok, dann eben nochmal von ganz von vorne... wenn spinEdit.Value = 1 ist, dann zeichnet meine funktion einfach einen ganz normalen pixel...
Delphi-Quellcode:
wenn spinEdit.Value aber größer als 1 ist, dann soll erin etwas anderes zeichnen, nämlich ein Viereck mit 4 gleich langen seiten mit der seitenlänge "spinEdit.Value"
if spinEdit.Value=1 then begin
image1.Canvas.Pixels[x,y]:=ColorDialog2.Color;
Delphi-Quellcode:
x1,y1 sind in diesem fall die koordinaten des mauszeigers, also auch der linken oberen ecke des Vierecks...
end else
image1.Canvas.Brush.Color:=ColorDialog2.Color; image1.Canvas.Rectangle(x1,y1,x2,y2); end; wenn meine spinEdit-Komponente jetzt auf 2 steht, will ich, dass es ein Rechteck zeichnet, mit der seitenlänge 2pixel... also ein rechteck der größe 2x2 px.... das problem ist aber dass es das nicht macht, sondern dass es das rechteck immer doppelt so groß zeichnet... und des problem will ich beheben... mit den tipps die ich aber bisher bekommen habe, klappt das nicht... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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