![]() |
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... |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
Liste der Anhänge anzeigen (Anzahl: 1)
x2 und y2 sind nicht Breite und Höhe des Quadrats. :idea:
Schau dir mein Beispiel dazu an. |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
das weiß ich...
ich schreib gerade ein komplettes "Paint"-Programm.... nur das mit dem spinEdit klappt halt nicht... statt deinem Edit3 hab ich ne spinEdit-Komponente, und mit der funktionierts bei mir nicht... soll heißen wenn ich da 10 eingebe, dann bekomme ich kein rechteck mit der seitenlänge 10, sondern mit der doppelten seitenlänge... und das mit der gleichen funktion die du auch hast....
Delphi-Quellcode:
image1.Canvas.Rectangle(x, y, x + spinEdit.Value, y + spinEdit.Value);
|
Re: Incompatible types: 'Integer' and 'Extended' (??????)
Liste der Anhänge anzeigen (Anzahl: 1)
Scheinbar hast mein Beispiel nicht studiert :wink:
|
Re: Incompatible types: 'Integer' and 'Extended' (??????)
so, jetzt hab ichs (fast) genauso wie du, und es funktioniert immer noch nicht...
Delphi-Quellcode:
die entstehendes quadrate sind immernoch doppelt so groß wie sie sein sollten...
Q:=StrToInt(spinEdit.Text);
if BitBtnPunkt.Enabled=false then begin if spinEdit.Value=1 then begin image1.Canvas.Pixels[x,y]:=ColorDialog2.Color; end else image1.Canvas.Brush.Color:=ColorDialog2.Color; image1.Canvas.Rectangle(x, y, Q + x, Q + y); end; das einzigste was ich nicht übernommen habe ist dieses
Delphi-Quellcode:
und an dem wirds wohl nicht liegen, oder?
with Canvas do
begin |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
am with .. do liegt es nicht :-D
|
Re: Incompatible types: 'Integer' and 'Extended' (??????)
ja aber an was dann? ^^ :gruebel: :roll:
|
Re: Incompatible types: 'Integer' and 'Extended' (??????)
*push*
kann mir denn keiner wieterhelfen??? ^^ was ist denn nun mein fehler? bzw. der unterschied zwischen meinem code und dem von bigg?? |
Re: Incompatible types: 'Integer' and 'Extended' (??????)
Sicher, dass du da falsche Seitenlängen bekommst? Ich hab's grad getestet und da siehts so aus, wie man's erwarten könnte.
Delphi-Quellcode:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var q: integer; begin q:=spinedit1.Value; image1.Canvas.Rectangle(x,y,x+q,y+q); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 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