Autor Beitrag
XZeranski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Sa 24.05.03 19:08 
Hallo, bin in Delphi noch recht unerfahren und habe folgendes Problem:

Ich habe eine Variable x mit Real definiert.

Damit ich die Befehle MoveTo und LineTo benutzen kann brauche ich x jedoch als Integerzahl. Wie kann ich x so umwandeln das sie als Integerzahl erkannt wird?
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Sa 24.05.03 19:17 
Round(Variable) -> Rundet
Trunc(Variable) -> Schneidet die Zahlen nach dem Komma einfach ab.
XZeranski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Sa 24.05.03 19:27 
Hm, das hat geklappt. Aber irgendwie löst das mein Problem nicht so ganz.

Folgendes:

Ich will z.b. die Funktion x^2 zeichnen lassen. Dazu habe ich folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 
var x: real;
     i,f : integer;
    
begin
   i := -50;
      while i < 50 do
        begin
           image1.canvas.moveto(i+175,-f+175);
           x := (i * i)/300;
           f := Trunc(x);
           image1.Canvas.LineTo(i+175,-f+175);
           i := i + 1;
       end;
end;


Damit ich einen besseren Maßstab bekomme, möchte ich den f - Wert aber halbieren. Das ist mir aber nicht möglich da er ja nur ganze Zahlen annimmt.
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Sa 24.05.03 19:31 
Statt / einfach div nehmen.
XZeranski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Sa 24.05.03 19:53 
Dann habe ich jetzt aber das Problem dass ich wenn ich z.b.
x := (i * i ) div 35
nehme, bei kleinen i - Werten keinen Punkt erhalte weil er die Werte einfach auf 0 rundet. Ich brauche aber eine durchgängige Kurve.

Edit: Vorher habe ich folgenden Befehl zur Darstellung der Kurve genommen:
ausblenden Delphi-Quelltext
1:
image1.Canvas.Pixels[round((x*35)+175),round((-f)+175)]:=clred					


Aber jetzt suche ich nach einem alternativen Weg weil die Darstellung mit dem oben genannten Weg einfach zu lange dauert, wenn ich z.b. x bei -100 starten lasse und mit einem Erhöhungsschritt von 0.001 (um eine ununterbrochene Linie zu erhalten) bis 100 laufen lasse, wartet man ewig.