Autor Beitrag
wayne123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 22:39 
Hab da ein kleines Problem. Wollte mit Canvas Kurven zeichnen. In meiner Rechnung ist aber eine Dezimalzahl(0,024) und jetzt wollte ich wissen, wie ich mit "i: Extended" "for i:= 1 to 200 do", welches ja nur mit integer funktioniert machen kann. Könnte mi das vielleicht jemand netterweise sagen?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.11.10 22:44 
Wie sieht deine Rechnung denn aus?

Du kannst entweder mit i in der Rechnung rechnen oder einfach eine while-Schleife benutzen. ;-)
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 22:48 
Ja die Rechnung ist, da ich ja keine Kommazahlen bei Integer benutzen darf, 1 div 50 * i^2+150" und durch das div kommt bei 1 div 50 immer 1 raus, wodurch eine Linie am Ende rauskommt. Wenn ich "i" jetzt zu einer Extended Variable mache, steht da. For Schleifenvariable muss vom ordinalen Typ sein. Mit while wüsste ich gerade nicht, wie man eine quadratische Funktion machen sollte, die dann 100 mal für die x Werte 100 bis 200 rechnen würde.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.11.10 22:52 
Dann nimm doch eine normale Division statt einer Integerdivision...
ausblenden Delphi-Quelltext
1:
1 / 50 * Sqr(i) + 150					
Wenn du eine Integerdivision nutzt, kommen natürlich nur ganze Zahlen heraus.
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 23:08 
Dann steht da ja aber, dass Integer und Extended inkompatible Typen sind, weil man ja / bei integer Variabeln doch nicht benutzen kann.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 28.11.10 23:11 
Wenn du raus gefunden hast, wie man 0,024 Pixel zeichnet, gib mal bitte Bescheid.
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 23:18 
Nein, ich rechne ja 3 durch 125 um auf 0,024 zu kommen(bei integer kommt halt 1 raus) und das multipliziere ich dann mit 200 oder solchen großen Zahlen halt, wo dann genau 250 rauskommen soll, was es ja wahrscheinlinlich auch tut, ich möchte halt nur eine kurve.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 28.11.10 23:24 
In der for-Schleife soll die Kurve gezeichnet werden? Dann berechne die Punkte vorher passend und nicht nachher.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.11.10 23:30 
Das Ergebnis musst du dann natürlich noch z.B. runden (Round).
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 23:32 
Das sind doch aber 100 Punkte und die soll ich alle vorher ausrechnen. Wenn jetzt z.b. 457,54 als y Koordinate des 2 Punktes rauskommt, dann wird die nicht automatisch gerundet. Ohh man bin ich gerade durcheinander. Also man kann mit einer for Schleife keine Kurven zeichnen, oder wie?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.11.10 23:35 
user profile iconwayne123 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn jetzt z.b. 457,54 als y Koordinate des 2 Punktes rauskommt, dann wird die nicht automatisch gerundet.
Warum auch? Wenn du das möchtest, schreib es doch hin. Woher soll der PC "wissen", dass du das möchtest? :nixweiss:
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 28.11.10 23:35 
Dein Programm besteht doch aus zwei Teilen. Im ersten Teil werden die Punkte berechnet und im zweiten wird mit der for-Schleife die Kurve gezeichnet. So, bevor du die Punkte an die Schleife übergibst, rundest du die Punkte auf ganze Werte. Wo ist da jetzt dein Problem?
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 23:37 
Ich hab das eher so gemacht

for i:= 100 to 200 do
begin
Canvas.LineTo(i,[quadratische Funktion])
end;

darf man das nicht so machen?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.11.10 23:38 
Dann mach es doch so. Wenn du im Code auch hinschreibst, dass der Wert gerundet werden soll, dann passiert das auch...
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 23:45 
Ja nur das einzige Problem ist halt, dass die quadratische Gleichung mit 0,024 anfängt und mit integer kann ich keine Dezimalzahl darstellen und mit extended funktioniert der Rest nicht mehr.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 28.11.10 23:47 
Für das Zeichnen kannst du mit den Nachkommastellen doch ohnehin nichts anfangen. Deshalb kannst du genau bei der Berechnung des Koordinatenwertes runden. Ich verstehe das Problem nicht. :nixweiss:
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 23:49 
wenn ich dann rechne 0,024 * 200 spielt das doch schon eine Rolle.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 28.11.10 23:50 
ausblenden Delphi-Quelltext
1:
trunc(0,024 * 200)					


Trozdem würde ich das trennen und der Schleife nur eine Liste der zu zeichnenden Pixel übergeben.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 28.11.10 23:53 
mir qualmt der Kopf :shock:

Zeig doch mal bitte deinen Sourcecode ;) Ich glaub alle reden hier aneinander vorbei

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 28.11.10 23:57 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
Canvas.MoveTo(0,0);     //s 150,150 letzter p 200,100
for i:= 0 to 200 do
begin
sleep(50);
Canvas.LineTo(i,(-1 div 50)*(i-150)*(i-150); //halbes Rechteck, minus wird garnicht benutzt. -1div50             wahrscheinlich immer 1, oder?

end;
end;
end.



Also, das ist der Teil meines Quelltextes. Das ist jetzt nur ein Testprogramm alleine für eine Kurve. Das mit dem Trunc einfach da reinsetzen funktioniert so nicht und wie man die zu zeichnenden Pixel an Delphi weitergibt weiß ich nicht, aber braucht man dafür dann auch noch eine Schleife.

Moderiert von user profile iconMartok: Delphi-Tags eingefügt