Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Datenbank mit dynArray und Record


Herbert - Fr 27.12.02 20:24
Titel: Datenbank mit dynArray und Record
Ich habe mir eine Datenbank mit dyn.Arrays und Records geschrieben.
Wie kann ich jetzt diese mit dem Entsprechenden Dialogen diese öffnen bzw. speichern.

Würde mich über jede Hilfe freuen!


Christian S. - Sa 28.12.02 20:16

Was genau verstehst Du denn unter den "entsprechenden Dialogen"? Beschreibe doch mal genauer, was Du eigentlich machen willst!


Herbert - Sa 28.12.02 21:44

Ich möchte, dass ich, wenn ich die Datenbank speichere, ein Speicherndialog kommt. Wenn ich lade, dann der öffnen dialog. Die Datenbank habe ich geschafft zu schreiben, jetzt möchte ich aber, dass ich es öffnen und speichern kann. Nur ich weiß nicht wie :oops: :( :cry:


Keldorn - Sa 28.12.02 22:21

Hallo

hast du dir schon mal die Registerkarte Dialoge und dort Open und Savedialog angeschau?

schau in der onlinehilfe opendialog.execute nach dort ist auch ein kleines Besipiel

Mfg Frank


Christian S. - Sa 28.12.02 22:23

Ach so!

Also, zuerst einmal musst Du Dir eine Datei definieren, in der Du Dein Record speichern kannst. Also, wenn Dein Recordtyp TDaten heißt, kannst Du Dir so einen Dateitypen definieren, der diese Daten aufnehmen kann:

Quelltext
1:
VAR datei : File of TDaten;                    


Das Lesen einer Datei geht so:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
VAR daten : ARRAY OF TDaten;
begin
  AssignFile(datei,'c:\test.dat');
  {$I-}
  Reset(datei);
  {$I+}
  IF IOResult = 0 THEN
  while not EOF(datei) DO
  begin
    SetLength(daten, Length(daten)+1);
    ReadLn(datei,daten[High(daten)]);
  end;  
  CloseFile(datei);
end;


So, das Schreiben einer Datei geht eigentlich fast genauso:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
VAR daten : ARRAY OF TDaten;
       i : INTEGER;
begin
  AssignFile(datei,'c:\test.dat');
  ReWrite(datei); //ACHTUNG! Bereits in der Datei vorhandene Daten
                         //gehen verloren!
  IF IOResult = 0 THEN
  for i:=0 TO High(daten) do
  Write(datei,daten[i]);
  CloseFile(datei);
end;


Den OpenDialog und den SaveDialog zu benutzen, ist nicht schwer. Mit Execute rufst Du beide aus, diese Funktion gibt dir mit einem Boolean auch direkt zurück, ob er erfolgreich zu Ende gebracht wurde, oder ob der Benutzer abgebrochen hat. In der Eigenschaft Filename ist nach Erfolg der Dateiname zum Öffnen oder Speichern hinterlegt.

MfG,
Peter

P.S.: Die Quelltexte sind nicht getestet und ich habe das schon lange nicht mehr gemacht. Also können noch Fehler drin sein. Bei gravierenden einfach nachfragen.