Autor Beitrag
malibu85
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Mo 17.12.07 16:08 
Hallo,
ich bekomme bei der folgenden For-Schleife eine Fehlermeldung die sich auf die Typen integer und double bezieht. ich habe im Programmkopf die beiden Variablen " Kapital" und "KapitalwertNeu" als real deklariert und möchte diese in der folgenden For-Schleife verwenden
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button2Click(Sender: TObject);


var
x,y : integer;

begin
c:=Int(Kapital);
d:=Int(KapitalwertNeu);
for x := Kapital to KapitalwertNeu do
  begin
       x:=y;
       paintBox1.Canvas.Pixels[x,y]:=clBlue;
  end;
end;


die fehlermeldung lautet in diesem fall:[Pascal Fehler] Unit1.pas(92): E2010 Inkompatible Typen: 'Integer' und 'Double'

weiß jemand wie ich die beiden real Datentypen Kapital und KapitalwertNeu korrekt umwandeln kann so dass ich sie in der For-schleife benutzen kann? Mir reichen knappe kurze antworten. Danke
Gruß Malibu
blume283
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 23


Delphi 7
BeitragVerfasst: Mo 17.12.07 16:12 
hi Malibu,

wie wärs mit Round(Kapital) (bzw "Ceil" fürs Aufrunden und "Floor" fürs Abrunden)? (siehe Code)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
c:=Int(Kapital);
d:=Int(KapitalwertNeu);
for x := Round(Kapital) to Round(KapitalwertNeu) do
  begin
       x:=y;
       paintBox1.Canvas.Pixels[x,y]:=clBlue;
  end;
end;


viele grüße
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 17.12.07 16:12 
Da würde vielleicht round helfen.

btw.: Deine for-Schleife geht nicht. Man sollte die for Schleife (x) in der Schleife nicht verändern. Da muss du x und y vertauschen (obwohl du y gar nicht brauchst ;-))

_________________
We are, we were and will not be.
malibu85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Mo 17.12.07 17:59 
hmm so ganz läuft das programm bei mir noch nicht ich glaube, ich darf in der vorschleife keine gleitkommazahlen verwenden. Ich dachte eher an eine Typenumwandlung. Jedoch glaube ich das man real nicht so einfach in integer umwandeln kann denn die kompatiebelität ist doch nicht vorhanden den schließlich ist int eine echte Teilmenge von real und nicht umgekehrt.
malibu85 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Mo 17.12.07 18:34 
In diesem Fall so habe ich gerade gelesen, benutzt man die <funktion Trunc. In Trunc steckt man einen Real-wert rein heraus kommt ein integer wert. Die Nachkommastellen werden dabei einfach abgeschnitten.