Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Speichern von Stringgrid-Daten in ein Record, dann Array


mb09092 - Di 20.07.10 19:00
Titel: Speichern von Stringgrid-Daten in ein Record, dann Array
Hallo Zusammen!

Hab ein kleines Problem:

Bin am Programmiern eines Regressionsformulars, d.h. man füttert ein Stringgrid mit x- und y-Werten und bekommt vom Programm eine Exponentielle Regression ausgeführt.
Tut soweit alles wunderbar, nur häng ich jetzt beim Speichern.

Ich will die vom Benutzer eingegebenen x- und y-Werte auf Festplatte abspeichern können um später wieder laden zu können.

Hab dazu einen Record definiert und ein Array...


Delphi-Quelltext
1:
2:
3:
4:
5:
type
  Rec = record
    xWert:double;
    yWert:double;
    end;



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  Anz:integer;
  Regressionsformular: TRegressionsformular;
  r,a,b:double;
  Speicherarray:array[1..1000of rec;
  Speicherung : file of rec;



Dann hab ich in der Speicherprocedur folgenden Quelltext geschrieben, um zuerst jede Zeile des Grids in das Record zu speichern und dann diese Zeile in ein Array der Stelle i...usw

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TRegressionsformular.Speichern_buClick(Sender: TObject);

var i:integer;

begin
for i := 1 to Tab.RowCount-1 do
begin
  rec.xWert:=strtofloat(Tab.Cells[1,i]); // Beim Debuggen bekomm ich einen Fehler...
  rec.yWert:=strtofloat(Tab.Cells[2,i]); // (E2096: Methodenbezeichner erwartet)
  Speicherarray[i]:=rec;
end;

if Festspeichern.execute then
begin
  AssignFile(Speicherung,FestSpeichern.FileName);
          Rewrite(Speicherung );
          for i := 1 to Tab.RowCount-1 do
            begin
              write(Speicherung,Speicherarray[i]);
            end;
            closeFile(Speicherung);
end;


end;

Kann mir jemand sagen was ich falsch gemacht hab also warum es nicht funktioniert und wie es richtig heißen müsste??

Danke schonmal!

Grüße
Seba

Moderiert von user profile iconNarses: Doppelslahes am Zeilenanfang im Code entfernt und Highlight-Tags ergänzt.


mb09092 - Di 20.07.10 19:02

Das ist eine gute Idee, nur: könntest du mir sagen wie du das genau meinst?

Bin neu hier :-)

Hab halt den Qualltext ausm RADStudio rauskopiert...


ALF - Di 20.07.10 19:07

kurz erklärt '[delphi]dein quelltext[/delphi]'
oder im Editor auf Bereiche gehen :wink:
und :welcome: hier

Gruss Alf


mb09092 - Di 20.07.10 19:22

Danke euch schonmal dafür :-)

Jetzt mal schaun was aus meinem Prob wird...


jaenicke - Di 20.07.10 21:08

Du greifst auf rec zu, das ist aber der Recordtyp. (Deshalb sollte das auch TRec heißen...)

Entweder deklarierst du dir eine Variable und greifst auf die jeweils zu oder du machst es ganz einfach:

Delphi-Quelltext
1:
2:
  Speicherarray[i].xWert := StrToFloat(Tab.Cells[1, i]);
  Speicherarray[i].yWert := StrToFloat(Tab.Cells[2, i]);