AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wertetabellen und Funktionen

Ein Thema von Delphi-Freund · begonnen am 29. Jan 2010 · letzter Beitrag vom 10. Feb 2010
Antwort Antwort
Seite 2 von 2     12
Delphi-Freund

Registriert seit: 13. Dez 2009
12 Beiträge
 
#11

Re: Wertetabellen und Funktionen

  Alt 9. Feb 2010, 20:49
Also die wertetabelle ist teil meines programmes... man kann eben anfangswert (aw) endwert (ew) und schrittweite (s) eingeben...
Delphi-Quellcode:
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;
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...
Delphi-Quellcode:
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;
Wäre euch dankbar für hilfe

mfg Delphi-Freund

[edit=mkinzler]Code-Tags durch Delphi-Tags ersetzt; Was spricht den eigentlich gegen den richtigen Tag Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Wertetabellen und Funktionen

  Alt 10. Feb 2010, 04:45
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:
function TForm1.MeineFunkt(x:Extended):Extended;
begin
  result := a*sqr(x)+b*x+c;
end;
Statt nun überall trunc(a*sqr(aw)+b*aw+c) aufzurufen, verwendest du stattdessen Trunc(MeineFunkt(aw)).
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,...)
  Mit Zitat antworten Zitat
Delphi-Freund

Registriert seit: 13. Dez 2009
12 Beiträge
 
#13

Re: Wertetabellen und Funktionen

  Alt 10. Feb 2010, 13:23
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 von sx2008:
4.) du verwendest die Paintbox auf eine falsche Weise
Auf eine Paintbox sollte man nur auf dem Event OnPaint heraus zeichen.
Sry aber ich arbeite zum ersten mal mit Grafiken in Delphi. Hab nur im inet gelesen, dass die Darstellung z.b. mit Images oder PaintBox möglich ist.
Wie verwende ich die PaintBox richtig?

mfg Delphi-Freund
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Wertetabellen und Funktionen

  Alt 10. Feb 2010, 14:09
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
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Delphi-Freund

Registriert seit: 13. Dez 2009
12 Beiträge
 
#15

Re: Wertetabellen und Funktionen

  Alt 10. Feb 2010, 20:54
Ok Vielen Dank euch allen!! Mein Problem hat sich gelöst
DANKE

mfg Delphi-Freund
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Wertetabellen und Funktionen

  Alt 10. Feb 2010, 21:12
Zitat von Delphi-Freund:
dass Delphi mit LineTo nur integerwerte verarbeitet.
Überleg mal, warum das wohl so ist. Oder wie willst du 1,56987 Pixel darstellen/ansprechen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz