AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Incompatible types: 'Integer' and 'Extended' (??????)
Thema durchsuchen
Ansicht
Themen-Optionen

Incompatible types: 'Integer' and 'Extended' (??????)

Ein Thema von Tobias · begonnen am 18. Nov 2004 · letzter Beitrag vom 20. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Tobias
Tobias

Registriert seit: 26. Okt 2004
Ort: Pforzheim
18 Beiträge
 
Delphi 6 Personal
 
#1

Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 18. Nov 2004, 21:19
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...

xspin:=spinEdit.Value/2; Variable ist registriert...
spinEdit heißt wirklich spinEdit und nicht etwa spinEdit1
insofern müsste eigentlich alles klappen...
Aber wegen dem "/2" bringt er folgende Fehlermeldung:
Incompatible types: 'Integerand 'Extended' Ich hab jetzt ewig lang rumprobiert, bin aber zu keinem Ergebnis gekommen...

Was ist da falsch?????
Tobias
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bin am verzweifeln....

  Alt 18. Nov 2004, 21:20
Ändere bitte den Titel, so dass er das Problem anreißt. Danke.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#3

Re: Bin am verzweifeln....

  Alt 18. Nov 2004, 21:24
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).
  Mit Zitat antworten Zitat
Benutzerbild von Tobias
Tobias

Registriert seit: 26. Okt 2004
Ort: Pforzheim
18 Beiträge
 
Delphi 6 Personal
 
#4

Re: Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 18. Nov 2004, 21:36
klappt leider immernochnicht ganz....

weder mit
Delphi-Quellcode:
xspin:=round(spinEdit.Value/2);
yspin:=round(spinEdit.Value/2);
image1.Canvas.Rectangle(x,y,xspin+x,yspin+y);
noch mit
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... ^^
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ß...
Tobias
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#5

Re: Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 18. Nov 2004, 21:55
Jetzt sollte dir was auffallen.
Code:
Image1.Canvas.Rectangle(3, 3, 13, 13);
  Mit Zitat antworten Zitat
Benutzerbild von Tobias
Tobias

Registriert seit: 26. Okt 2004
Ort: Pforzheim
18 Beiträge
 
Delphi 6 Personal
 
#6

Re: Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 19. Nov 2004, 13:05
@bigg: was soll mir dardan jetzt auffallen?



hab gestern n och n kumpel gefragt, der konnt mir aber auch net unbedingt weiterhelfen...
hier mal auszugsweise unser gespräch:

Zitat:
[22:57] Marc: des rätsels lösung:
[22:57] Tobi: paint...
[22:57] Marc: xspin: double; anstatt deiem integer
[22:58] Marc: der fehler ist...du teilst eine zahl...z.b. 1 durch 2 als ergebnis kommt 0.5 raus...integer kann aber nur ganz zahlen speichern, daher kommt es an diser stelle zu einem konflikt
[22:58] Marc: kapiert? bzw. funzts?

[22:59] Tobi: ouh shit ^^
stimmt ja
[22:59] Tobi: There is no overloaded version of 'Rectangle' that can be called with these arguments
[22:59] Tobi: image1.Canvas.Rectangle(x,y,xspin+x,yspin+y);
[23:00] Tobi: hier brauch ichs halt wieder als integer
[23:00] Marc: hmm...runden?
[23:01] Tobi: bzw. mal zum ursprung des problems: warum zeichnets des rechteck überhaupt doppelt so groß?????
[23:03] Tobi: xspin:=spinEdit.Value/2;
yspin:=spinEdit.Value/2;

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,round(xspin)+x,round(y spin)+y);
end;
[23:03] Tobi: wenn spinEdit = 1 ist, dann macht er einfach einen ganz normalen 1-pixel großen punkt....
wenn spinEdit = 2 ist, dann soll er ein rechteck zeichnen, 2x2 Pixel...
bei sE=3 3x3 Pixel...
usw....
[23:05] Marc: sprich du willst einfach nen ausgefüllten, punkt in rechteckform machen?
[23:06] Tobi: genau
[23:07] Marc: k...*denkphase*
[23:07] Tobi: k ^^
[23:09] Marc: und dein spinedit soll die breite bzw. höhe angeben?
[23:12] Tobi: genau...
des nur nochmal als anregung...



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:
[23:01] Tobi: bzw. mal zum ursprung des problems: warum zeichnets des rechteck überhaupt doppelt so groß?????
Tobias
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#7

Re: Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 19. Nov 2004, 13:56
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?
  Mit Zitat antworten Zitat
Benutzerbild von BenniKay
BenniKay

Registriert seit: 17. Sep 2004
Ort: Meerbusch
2 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 19. Nov 2004, 14:05
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?
Wenn man annimmt, dass Pi in der Woche drei ist und Sonntags vier, erhält man Pi = 22/7 oder 3,1428571428571428571428571428571
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#9

Re: Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 19. Nov 2004, 14:53
@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.
Angehängte Dateien
Dateityp: zip rechnen_162.zip (35,3 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Tobias
Tobias

Registriert seit: 26. Okt 2004
Ort: Pforzheim
18 Beiträge
 
Delphi 6 Personal
 
#10

Re: Incompatible types: 'Integer' and 'Extended' (??????)

  Alt 19. Nov 2004, 15:39
@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:
if spinEdit.Value=1 then begin
image1.Canvas.Pixels[x,y]:=ColorDialog2.Color;
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"
Delphi-Quellcode:
end else
image1.Canvas.Brush.Color:=ColorDialog2.Color;
image1.Canvas.Rectangle(x1,y1,x2,y2);
end;
x1,y1 sind in diesem fall die koordinaten des mauszeigers, also auch der linken oberen ecke des Vierecks...
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...
Tobias
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:48 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