Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlermeldung:Inkompatible Typen:'Integer'und'Extended' ???? (https://www.delphipraxis.net/126571-fehlermeldung-inkompatible-typen-integerundextended.html)

Hans33 28. Dez 2008 16:28


Fehlermeldung:Inkompatible Typen:'Integer'und'Extended' ????
 
Hallo

Ich vestehe nicht warum bei mir eine Fehlermeldung bei diesem Code kommt:
Delphi-Quellcode:
var x,y,c,m:Integer;
y:=m/(x+(270-(2*x)));
Fehlermeldung:
Zitat:

[Pascal Fehler] Unit1.pas(65): E2010 Inkompatible Typen: 'Integer' und 'Extended'
Danke für Hilfe

mkinzler 28. Dez 2008 16:29

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Beim Dividieren könnten Nachkommastellen entstehen. Deshalb als Ergebnis ein Float, Runden/Anschneiden oder ein DIV statt /

DeddyH 28. Dez 2008 16:30

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Integer-Division geht mit div statt /.

[edit] Schon wieder dieser Markus *grmpf* [/edit]

juergen 28. Dez 2008 16:33

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Hallo Hans33,

du vernwendest bei Integer "/". Das geht nicht.
Entweder du verwendest div evtl. in Kombination mit mod oder du musst deinen Datentyp ändern (anstelle Integer dann z.B. Extended)

Edit: roter Kasten, viiiel zu langsam.... :(

Hans33 28. Dez 2008 16:36

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Das Problem ist nur folgendes: Ich muss auch durch Null teilen
Delphi-Quellcode:
for x := 1 to 270 do
    begin
         y:=m/(x+(270-(2*x)));
         Paintbox1.Canvas.Pixels[x,y]:=clBlue;
    end;
Mit div statt / kommt: Dividieren durch Null nicht möglich

Hans33 28. Dez 2008 16:37

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
mit y:real; klappt es nicht zu zeichnen, denn dazu brauch ich nämlich Integerwerte

haentschman 28. Dez 2008 16:38

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Zitat:

Mit div statt / kommt: Dividieren durch Null nicht möglich
...das ist grundsätzlich nicht möglich.
Diesen Fall mußt du vorher abfangen und entsprechend reagieren.

:hi:

DeddyH 28. Dez 2008 16:40

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Durch 0 kannst Du nicht teilen, egal ob ganze oder Fließkommazahl. Du kannst statt div zu verwenden aber auch anders vorgehen:
Delphi-Quellcode:
for x := 1 to 270 do
    begin
         y:=round(m/(x+(270-(2*x)))); // x und y sind integer
         Paintbox1.Canvas.Pixels[x,y]:=clBlue;
    end;

Hans33 28. Dez 2008 16:43

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
hab jetzt halt
Delphi-Quellcode:
for x := 1 to 270 do
    begin
         y:=round((x+(270-(2*x)))/m);
         Paintbox1.Canvas.Pixels[x,y]:=clBlue;
    end;

Zipp 1. Jan 2009 12:15

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Zitat:

Zitat von Hans33
Das Problem ist nur folgendes: Ich muss auch durch Null teilen
Delphi-Quellcode:
for x := 1 to 270 do
    begin
         y:=m/(x+(270-(2*x)));
         Paintbox1.Canvas.Pixels[x,y]:=clBlue;
    end;
Mit div statt / kommt: Dividieren durch Null nicht möglich

Wenn man

x+(270-(2*x))

umformt, dann erhält man

270-x

Da die Schleife bis 270 geht ist klar, dass beim letzten Durchlauf x=270 ist und damit der Nenner 0 wird.

Luckie 1. Jan 2009 12:41

Re: Fehlermeldung:Inkompatible Typen:'Integer'und'Extended'
 
Um es noch mal deutlich zu machen. Tilen durch null ist eine nicht erlaubte mathematische Operation, da sie nicht definiert ist. Hat also nichts mit der Programmiersprache zu tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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