![]() |
Graph zeichnen
Hallo,
wir haben die Aufgabe, ein Programm zu erstellen (delphi 5), in dem man ein Koordinatenstystem hat, daneben 4 verschiedene Funktionen anklicken kann und im unten stehenden Feld Zahlen für die Variablen eingeben kann. Die ersten zwei Funktionen funktionieren, aber irgendwie wird die dritte Funktion nicht gezeichnet. Weiß jemand Rat? :roll: Wir sind leider nicht so gut in Informatik.^^ :( Vielen Dank im Voraus! Hier der Quelltext:
Delphi-Quellcode:
:hi: :oops:
implementation
{$R *.dfm} var a,b,c: real; procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin with image1.Canvas do begin moveto(20,220); lineto(420,220); //x-Achse moveto(220,20); lineto(220,420); //y-Achse moveto(410,215); lineto (422,220); lineto (410,225); //x-Pfeil moveto(215,30); lineto (220,18); lineto (225,30); //y-Pfeil textout(425,225,'x'); //Beschriftung for i:=-3 to 3 do begin moveto(220+50*i,215); lineto (220+50*i,225); //x-Einteilung moveto(215,220+50*i); lineto (225,220+50*i); //y-Einteilung textout(222+50*i,225,inttostr(i)); //Zahlen x-Achse if i <> 0 then textout (205,213+50*i,inttostr(-i)); //Zahlen y-Achse end; end; end; procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; x,y: real; begin a:=strtofloat(Edit1.Text); //Eingabe b:=strtofloat(Edit2.Text); i:=20; while i < 420 do begin i:=i+1; x:=(i-220)/50; y:=a*x+b; j:=round((220-y*50)); image1.Canvas.Pixels[i,j]:=clred; image1.Canvas.Pen.Color:=clred; image1.Canvas.TextOut(400,42,'y=ax+b'); //Beschriftung end; end; procedure TForm1.Button2Click(Sender: TObject); var i,j:integer; x,y:real; begin a:=strtofloat(Edit1.Text); //Eingabe b:=strtofloat(Edit2.Text); c:=strtofloat(Edit3.Text); i:=70; while i<420 do begin i:=i+1; x:=(i-220)/50; //x skalieren y:=a*sqr(x)+b*x+c; //Funktion y=ax²+bx+c j:=round((220-y*50)); //j berechnen image1.Canvas.Pixels[i,j]:=clgreen; //zeichnen image1.Canvas.TextOut(400,100,'y=ax²+bx+c'); //Beschriftung end; end; procedure TForm1.Button3Click(Sender: TObject); var i,j:integer; x,y:real; begin a:=strtofloat(Edit1.Text); //Eingabe b:=strtofloat(Edit2.Text); c:=strtofloat(Edit3.Text); i:=70; while i<420 do begin i:=i+1; x:=(i-220)/50; //x skalieren y:=a*sqr(x+b)+c; //Funktion y=a*(x+b)²+c j:=round((220-y*50)); //j berechnen image1.Canvas.Pixels[i,j]:=clblue; //zeichnen image1.Canvas.TextOut(400,100,'y=a*sqr(x+b)+c'); //Beschriftung end; end; end; end. |
Re: Graph zeichnen
Was für Werte haben a,b,c bei der dritten Funktion ?
|
Re: Graph zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Die Werte kann der Benutzer selbst eingeben.
So siehts aus: Schnipp [edit=Matze]Bild angehängt. MfG, Matze[/edit] |
Re: Graph zeichnen
ich hab das ganze mal selber kompiliert (mit deinem QC) und das ganze geht wunderbar, soweit ich das sehe.
Wüsste also nicht, was da nicht stimmen sollte... Was passiert überhaupt? Gar nichts? |
Re: Graph zeichnen
Nein, es passiert gar nix.
Mir ist aber schon von Anfang an was komisches aufgefallen: Wir haben das ja in der Schule programmiert und sollten das zu Hause weiter machen. Also hab ich den ganzen Ordner auf meinen PC gezogen und als ich das bearbeiten wollte, ist mir aufgefallen, dass ich nicht mehr auf den grünen Pfeil klicken kann (um es abzuspielen), da dann gleich eine Fehlermeldung kommt, obwohl ich da noch NICHTS geändert hatte. Die Fehlermeldung lautet: [Fatal Error] Unit1.pas(6): File not found: 'Variants.dcu' Also hab ich dann einfach immer was dazugeschrieben, es abgespeichert und "project1.exe" aufgerufen, um es mir anzugucken. Jedoch ist wie gesagt bei der dritten Funktion, bei der ich neuen Code hinzugefügt hatte, nix passiert. Oder kann man das so nicht machen? :gruebel: |
Re: Graph zeichnen
Am besten wäre es wohl in dem Fall, ein neues Projekt anzufangen, und den Code zu übernehmen.
So viel ist auf deinem Projekt ja nicht drauf. Aber ne Erklärung habe ich dafür auch nicht... ;) |
Re: Graph zeichnen
Moin, Moin.
Ich denke, das ist kein großes Problem. Immer wenn du ein neues Formular erzeugst, werden in uses automatisch eine Reihe von Units aufgenommen, auch "Variants" - obwohl man die meist gar nicht benötigt. Und diese Units findet der Compiler auf deinem System nicht. Komisch, aber nicht weiter tragisch. Für deinen Source benötigst du sie ebenfalls nicht. Also ist die Lösung ganz einfach: Einfach "Variants" aus der uses-Liste löschen. |
Re: Graph zeichnen
erklärt das das eigentliche Problem / Fehler / Bug ... vom TE?
Wie gesagt, ich habe mir alles aus dem QC von Julchen übernommen und einfach einen Button3, 3 Editfelder und ein Image1 auf eine sonst leere Form geklatscht und den Code eingesetzt. Alles lief problemlos. (Das KOS habe ich nicht gezeichnet :P ) Da kann doch nur ein Bug oÄ vorliegen?! Oder gibts dafür eine Erklärung? |
Re: Graph zeichnen
Meine Antwort bezieht sich (natürlich) nur auf die in #5 beklagte Fehlermeldung
|
Re: Graph zeichnen
Zitat:
Von daher einfach aus der Uses Klausel entfernen, und schon sollte es kein Problem beim Kompilieren geben :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz