Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Type 'feld' needs finalization - not allowed in file type


Exca - Mi 21.09.05 19:18
Titel: Type 'feld' needs finalization - not allowed in file type
Hallo ihr Delphis,

normalerweise programmiere ich eher PHP, aber ich habe jetzt eine kleine Aufgabe für ein Programm bekommen, folgendes:
Ziel ist eine Art Bibliothekssoftware, die Bestände sollen per StrigGrid eingegeben und per Dateihandlungen in Dateien gespeichert werden. Solange ich das in der Schulzeit mit integers gemacht habe, war es kein Problem. Da es sich bei Buchtiteln u.ä. um Strings handelt, habe ich natürlich ein 2D-Array aus string erstellt. Bei der Deklaration der Datei file of ... gibt er dann den oberen Fehler aus.


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:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
const max=500;
type feld=array[0..max,0..max] of string;
var biblio : feld;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 StringGrid1.Cells[0,0]:='Lfd. Nr';
 StringGrid1.Cells[1,0]:='Autor';
 StringGrid1.Cells[2,0]:='Buchtitel';
 StringGrid1.Cells[3,0]:='Verliehen am';
 StringGrid1.Cells[4,0]:='Verliehen an';
 StringGrid1.Cells[5,0]:='V?';
 StringGrid1.Cells[6,0]:='R?';
end;


procedure TForm1.Speichern1Click(Sender: TObject);
var datei   : file of feld;  //<------- FEHLER --------
    i,r,s   : integer;
begin
  r:=StringGrid1.RowCount;
  for i:=1 to r do
  begin
    for s:=0 to 7 do
    begin
      biblio[s,i]:=StringGrid1.Cells[s,i];
    end;
  end;
  if SaveDialog1.Execute then
  begin
    assignFile(datei,SaveDialog1.FileName);
    rewrite(datei);
    write(datei,biblio);
    closeFile(datei);
  end;
end;


Warum kann ich kein String-Array in eine Datei speichern?


Moderiert von user profile iconChristian S.: Topic aus Algorithmen, Optimierung und Assembler verschoben am Fr 23.09.2005 um 01:04


Narses - Do 22.09.05 23:49

Moin!

user profile iconExca hat folgendes geschrieben:
Warum kann ich kein String-Array in eine Datei speichern?

Weil Strings (mittlerweile, scheinst aus der TurboPascal-Zeit zu kommen :wink:) auf dem Heap liegen und dynamische Objekte sind; file of kann aber nur statische Datentypen abbilden.

Lösung: String[255], wenn du mit max. 255 Zeichen auskommst; wenn nicht, dann am besten eine Datenbank nehmen; geht das auch nicht, vielleicht mal mit INI-Dateien testen... :?

cu
Narses


AXMD - Fr 23.09.05 06:50

ShortString sollte in jedem Fall funktionieren.

AXMD