Stringgrid (Problem gelöst)

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
HansImGlück
Beiträge: 4
Registriert: Di 7. Jan 2014, 17:25

Stringgrid (Problem gelöst)

Beitrag von HansImGlück »

Hallo liebe Foren mitglieder,

Als Hausaufgabe sollen wir ein Programm schreiben bei dem man die Parameter für eine quadratische Funktion eingibt und dann eine Wertetabelle erstellt wird. Die Eingabe und Berechnung der Y-Werte funktioniert, allerdings hapert es an der Ausgabe mit dieser Fehlermeldung: Index Out of range Cell[Col=1 Row=2} / In Datei 'grids.pas' in Zeile 8675.
Ich vermute das es daran liegt, das man keine Variablen benutzen darf um eine Zelle anzusprechen (In meinem Code also 's').
Nun meine Frage: gibt es eine andere Möglichkeit mit einer Schleife Werte in die Tabelle zu schreiben?

Hier mein Code:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c, x, y : real;
  x_start, x_sw: real; {x_sw = Schrittweite}
  x_anzahl, i, s : integer;
begin
  a := StrToFloat(Edit1.text);
  b := StrToFloat(Edit2.text);
  c := StrToFloat(Edit3.text);
  x_start := StrToFloat(Edit4.text);
  x_anzahl := StrToInt(Edit5.text) + 1;
  x_sw:= StrToFloat(Edit6.text);
 
  Stringgrid1.Cells[0,0] := 'x';
  Stringgrid1.Cells[1,0] := 'y';
  Stringgrid1.RowCount := x_anzahl;
 
  x := x_start;
  s := 1;
  For i := 1 to x_anzahl do
    begin
      y := a*x*x + b*x + c;
      x := x + x_sw;
      Stringgrid1.Cells[1,s] := FloatToStr(y);
      s := s + 1;
    end;
end;
Ich hoffe Ihr könnt mir helfen, weil ich komme einfach nicht weiter. :(
Zuletzt geändert von HansImGlück am Di 7. Jan 2014, 20:11, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Stringgrid

Beitrag von theo »

Kannst du das mal auf ein nachvollziehbares Beispiel runterbrechen?
Also statt Edits Zahlenwerte und Angaben zu ColCount etc.
Der Fehlermeldung nach ist klar, dass du auf eine Zelle zugreifst, die es nicht gibt.

HansImGlück
Beiträge: 4
Registriert: Di 7. Jan 2014, 17:25

Re: Stringgrid

Beitrag von HansImGlück »

theo hat geschrieben:Kannst du das mal auf ein nachvollziehbares Beispiel runterbrechen?
Ich habe jetzt einfach mal ein Bild mit Beispielwerten hochgeladen, in der Hoffnung das du das mit Beispiel gemeint hast. :)
Also statt Edits Angaben zu ColCount etc.
Hier komme ich leider nicht mehr mit... . Im Objektinspektor habe ich ColCount auf 2 gesetzt und verändere diesen Wert auch nicht im Programmablauf. Ich habe zwischendurch auch einmal s durch eine Zahl ersetzt (bei mir jezt 3), dann funktioniert es auch. Ich möchte allerdings mehrere Zellen "beschreiben" und nicht nur eine.
Dateianhänge
Nach Eingabe der Werte und klick auf den "Werte berechnen" Button
Nach Eingabe der Werte und klick auf den "Werte berechnen" Button

HansImGlück
Beiträge: 4
Registriert: Di 7. Jan 2014, 17:25

Re: Stringgrid

Beitrag von HansImGlück »

Ich habe es jetzt selbst herausbekommen. Bei untenstehender Zeile habe ich noch plus 1 angehängt ich würde dadurch Schlussfolgern das meine For to do Schleife immer einen Durchgang zu viel gemacht hat. Warum es ein Durchgang zuviel ist kann ich noch nicht verstehen. Also, wer es weis könnte es mir bitte noch erklären.

Beste Grüße
HansImGlück

Stringgrid1.RowCount := x_anzahl + 1;

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Stringgrid

Beitrag von theo »

Naja, eigentlich meinte ich, dass du das Problem so hochlädst, dass einer der das testen will nicht die ganze Anwendung nachbauen muss.

Aber eigentlich ist es immer daselbe. O und 1 Problem.
Wenn du 2 Rows erstellst (RowCount=2), dann hast du Row_0 und Row_1 aber nicht Row_2.

HansImGlück
Beiträge: 4
Registriert: Di 7. Jan 2014, 17:25

Re: Stringgrid

Beitrag von HansImGlück »

theo hat geschrieben:Naja, eigentlich meinte ich, dass du das Problem so hochlädst, dass einer der das testen will nicht die ganze Anwendung nachbauen muss.

Aber eigentlich ist es immer daselbe. O und 1 Problem.
Wenn du 2 Rows erstellst (RowCount=2), dann hast du Row_0 und Row_1 aber nicht Row_2.
Vielen Dank, hätte ich eigentlich auch selber drauf kommen müssen. :)

Antworten