Graphen auf x-Achse verschieben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Moo
Beiträge: 27
Registriert: Mi 21. Mai 2014, 19:11

Graphen auf x-Achse verschieben

Beitrag von Moo »

Hallo Lazarus Forum
Ich muss ein Infoprojekt machen wo ich per lazarus einen Graphen auf der x-Achse "wandern" lasse um eine Bewegungssequenz darzustellen.
Mein Problem ist nun, dass ich immer wieder fehler bekomme:
Bild
Hier der 2. Teil der Fehlermeldung:
Bild

Hier mein Quelltext:

Code: Alles auswählen

 var
  GesamtVerschiebung: Double = 0.0;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  CalcData(0);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  CalcData(-0.1);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  CalcData(+0.1);
end;
 
procedure TForm1.CalcData(Verschiebung: Double);
const
  MIN = -10;
  MAX = 10;
  N = 100;
var
  i: Integer;
  x: Double;
  y: Double;
begin
  GesamtVerschiebung := GesamtVerschiebung + Verschiebung;
  Chart1LineSeries1.Clear;
  for i := 0 to N-1 do begin
    x := MIN + (MAX-MIN) * i / (N-1);
    y := sin(x-sin(x));
    Chart1LineSeries1.AddXY(x, y);
  end;
end;
end. 

wp_xyz
Beiträge: 5134
Registriert: Fr 8. Apr 2011, 09:01

Re: Graphen auf x-Achse verschieben

Beitrag von wp_xyz »

Dieser Code, den ich dir auf http://www.lazarusforum.de/viewtopic.php?f=55&t=7840 gepostet habe, läuft einwandfrei. Allerdings handelt es sich nur um einen Auszug mit den wesentlichen Teilen zu deiner Frage, weil ich dachte, du wüsstest, wie ein Lazarus-Projekt aufgebaut ist. Habt ihr das in dem Informatik-Kurs nicht gelernt?

Hier eine Kurzanleitung:
  • Neues Projekt erzeugen, alles in einem Ordner deiner Wahl speichern.
  • Eine Chart-Komponente und zwei Buttons drauf platzieren
  • Chart doppelklicken, "Add", "Line series"
  • Auf dem 1. Button doppelklicken. Es öffnet sich der Editor mit einer leeren Button1Click-Methode. Den Code aus dem Exzerpt reinkopieren
  • Dasselbe mit dem 2. Button und Button2Click
  • Auf eine leere Stelle des Formulars klicken. Im Objectinspektor OnCreate auswählen, auf die Punkte klicken. Jetzt kannst du im Editorfenster den Code des Ereignisses TForm1.FormCreate eintragen-
  • Die Prozedur TForm1.CalcData in das Editor-Fenster kopieren (irgendwo unterhalb "implementation".
  • Im Kopf der Unit, unter TForm1...private den Prozedurnamen eintragen, also
    TForm1 = class(TForm)
    ...
    Private
    CalcData(Verschiebung: Double):
    ...
  • Es fehlt noch die globale Variable "Gesamtverschiebung", die du hinter implementation deklarierst, so wie zu Beginn des hier geposteten Quelltextes.
Dann sollte es funktionieren. Bitte versuche, jeden dieser Schritte zu verstehen. Generell rate ich dir, dich mehr über dir Grundlagen von Lazarus zu informieren. Es gibt einige gute Anfänger-Tutorials, z.B. http://wiki.lazarus.freepascal.org/Lazarus_Tutorial/de, http://wiki.lazarus.freepascal.org/Form_Tutorial/de, oder http://wiki.lazarus.freepascal.org/TACh ... ng_started

Antworten