Entwickler-Ecke

Dateizugriff - Datenspeicherung von einem Record aus versch Komponenten


Glostami - Mi 08.12.10 22:44
Titel: Datenspeicherung von einem Record aus versch Komponenten
Hi, ich hab mal eine Frage zur Datenspeicherung.



Also ich hab ein Record mit einem Edit, einer CheckBox und einem StringGrid:


Delphi-Quelltext
1:
2:
3:
4:
5:
type TRec = RECORD
       ed : TEdit;
       ch : TCheckBox;
       st : TStringGrid;
end;


Zusätzlich ein Array vom Typ TRec und die dazugehörige Variable:


Delphi-Quelltext
1:
2:
3:
type TPool = ARRAY [1..10of TRec
{...}
var test : TPool


Nun fülle ich die Edits mit Daten und ändere bei einigen CheckBoxen das Checked. Schließlich will ich das ganze speichern:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var dat : file of TRec;
    i : integer;
begin
  assignfile(dat, 'OPenDialog1.FileName');
  rewrite(dat);

  For i:=1 to 10 do
  begin
    write(dat,test[i]);
  end;

  closefile(dat);
end;


Da die irgendwie nicht funktioniert, klappt das aus prinzip nicht (weil es einfach nicht geht) oder gibt's eine andere Lösung?


elundril - Mi 08.12.10 22:53

Frage, was hast du denn vor? Eine Checkbox als Datenspeicher in einem Record zu halten ist nicht gerade die feine Englische.

lg elundril


Narses - Mi 08.12.10 23:01

Moin und :welcome: im Forum!

user profile iconGlostami hat folgendes geschrieben Zum zitierten Posting springen:
Da die irgendwie nicht funktioniert, klappt das aus prinzip nicht (weil es einfach nicht geht) oder gibt's eine andere Lösung?
Du schreibst hier nicht den Inhalt der Controls, sondern die Adresse der Objekte auf dem Heap - klar, das klappt nicht, weil es nicht das ist, was du willst. :idea: ;)

Zunächst mal solltest du keine typisierte Datei nehmen, sondern z.B. eine CSV-Datei (die kann man recht einfach mit einer TStringList bearbeiten). Da könntest du in einer Zeile (=Datensatz) die Werte der Controls CSV-konform ablegen.

cu
Narses


Glostami - Mi 08.12.10 23:16

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Moin und :welcome: im Forum!
--> Yo, danke.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:

user profile iconGlostami hat folgendes geschrieben Zum zitierten Posting springen:
Da die irgendwie nicht funktioniert, klappt das aus prinzip nicht (weil es einfach nicht geht) oder gibt's eine andere Lösung?
Du schreibst hier nicht den Inhalt der Controls, sondern die Adresse der Objekte auf dem Heap - klar, das klappt nicht, weil es nicht das ist, was du willst. :idea: ;)

Aha. Klingt plausibel.



user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
Frage, was hast du denn vor? Eine Checkbox als Datenspeicher in einem Record zu halten ist nicht gerade die feine Englische.

lg elundril


Ähm, naja. Ich hab mir gedacht, ich erstelle die ganzen Komponenten zur Laufzeit. Und beim speichern kann ich dann die ganzen Eigenschaften speichern, damit ich die beim laden einfach reinlesen kann.