![]() |
Re: Wertetabellen und Funktionen
Also die wertetabelle ist teil meines programmes... man kann eben anfangswert (aw) endwert (ew) und schrittweite (s) eingeben...
Delphi-Quellcode:
Und nun bin ich soweit, dass die Funktion "falsch herum" dargestellt wird... nun würde ich aber die Funktion gerne noch skarlieren sprich das man mit ner scrollbar die einheit des koordinatensystems bestimmen kann...
procedure TForm1.BitBtn1Click(Sender: TObject);
var a,b,caw,ew,s,x,y:Real; n:Integer; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); aw:=StrToFloat(Edit4.Text); ew:=StrToFloat(Edit5.Text); s:=StrToFloat(Edit6.Text); x:=aw; n:=0; while x<=ew do begin n:=n+1; y:=a*(sqr(x))+b*x+c; StringGrid1.cells[0,n]:=FloatToStrF(x,ffFixed,10,3); StringGrid1.cells[1,n]:=FloatToStrF(y,ffFixed,10,3); x:=x+s; end; StringGrid1.RowCount:=n+1; end;
Delphi-Quellcode:
Wäre euch dankbar für hilfe ;)
procedure TForm1.BitBtn6Click(Sender: TObject);
var a,b,c,aw,ew,s:Real; begin with form1.PaintBox1.Canvas do begin Brush.Color := clWhite; rectangle(-1,-1,form1.PaintBox1.Width+1, form1.PaintBox1.Height+1); Pen.Color := clBlack; TextOut(form1.PaintBox1.Width-8, form1.PaintBox1.Height Div 2+8, 'x'); TextOut(form1.PaintBox1.Width DIV 2-8, 8, 'y'); TextOut(form1.PaintBox1.Width-5, form1.PaintBox1.Height Div 2-7, '>'); TextOut(form1.PaintBox1.Width DIV 2-3, 0, '^'); MoveTo(0, form1.PaintBox1.Height div 2); LineTo(form1.PaintBox1.Width-1, form1.PaintBox1.Height div 2); MoveTo(form1.PaintBox1.Width div 2, 0); LineTo(form1.PaintBox1.Width div 2, form1.PaintBox1.Height-1); end; aw:=StrToFloat(Edit4.Text); ew:=StrToFloat(Edit5.Text); s:=StrToFloat(Edit6.Text); form1.PaintBox1.Canvas.MoveTo(trunc(aw)+form1.PaintBox1.Height div 2,trunc(a*sqr(aw)+b*aw+c)+form1.PaintBox1.Height div 2); repeat begin aw:=aw+s; form1.PaintBox1.Canvas.LineTo(trunc(aw)+form1.PaintBox1.Height div 2,trunc(a*sqr(aw)+b*aw+c)+form1.PaintBox1.Height div 2); end; until aw=ew; end; mfg Delphi-Freund [edit=mkinzler]Code-Tags durch Delphi-Tags ersetzt; Was spricht den eigentlich gegen den richtigen Tag :gruebel: Mfg, mkinzler[/edit] |
Re: Wertetabellen und Funktionen
Da sind noch einige Fehler in deinem Code.
1.) du schreibst überall form1. - lass das mal weg, es schadet mehr als es nützt 2.) du wiederholst deine Mathe-Funktion mehrfach in deinem Code; das verhindert, dass die Funktion leicht geändert werden kann Mach daraus eine Methode:
Delphi-Quellcode:
Statt nun überall trunc(a*sqr(aw)+b*aw+c) aufzurufen, verwendest du stattdessen Trunc(MeineFunkt(aw)).
function TForm1.MeineFunkt(x:Extended):Extended;
begin result := a*sqr(x)+b*x+c; end; 3.) veralteter Datentyp real. stattdessen Double oder Extended verwenden; die haben höhere Genauigkeit und sind schneller, da sie direkt von der FPU unterstützt werden 4.) du verwendest die Paintbox auf eine falsche Weise Auf eine Paintbox sollte man nur auf dem Event OnPaint heraus zeichen. 5.) du verwendest keine eigenen Methoden Überlege dir welche kleineren Aufgaben du in Methoden auslagern könntest (z.B. Beschriftung zeichen, Koordinatenkreuz zeichen,...) |
Re: Wertetabellen und Funktionen
Vielen dank für die Tipps. Habe bereits die Funktion eingearbeitet. Danke für den Hinweis. Den Datentyp Real haben wir in der Schule kennengelernt, aber wenn dieser veraltet ist, verwende ich lieber Double. (:
Aber einwas habe ich nicht verstanden: Zitat:
Wie verwende ich die PaintBox richtig? mfg Delphi-Freund ;) |
Re: Wertetabellen und Funktionen
Wie sx2008 schon angedeutet hat: Ziehe dir eine PaintBox auf dein Formular, wechsle im Objekt-Inspektor auf den Reiter "Ereignisse" und füge mit Hilfe eines Doppelklicks bei "OnPaint" die entsprechende Behandlungs-Routine für das Paint-Ereignis der Paintbox hinzu. Innerhalb dieser Routine kannst du dann auf die Zeichenfläche ("Canvas") der Paintbox zeichnen. Du musst also alles, was mit dem Zeichnen zu tun hat und bei dir bisher in der Button-Click-Routine drin ist, in diese Routine reinpacken.
mfg |
Re: Wertetabellen und Funktionen
Ok Vielen Dank euch allen!! :) Mein Problem hat sich gelöst ;)
DANKE :hello: :firejump: mfg Delphi-Freund |
Re: Wertetabellen und Funktionen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 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