Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Problem mit eigener Klasse und Array/ Record


Delete - So 23.08.09 21:48
Titel: Problem mit eigener Klasse und Array/ Record
Hallo zusammen,
Als erstes mal meine Unit:

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:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
unit UDateien;

interface

type

  TStunden = record
    Pnr: shortint; //4Stellen
    Auftragnr: shortint; //6Stellen
    Positionnr: byte; //2Stellen
    Stunden: double;
    DatumJahr: shortint;
    DatumMonat: byte;
    DatumTag: byte;
    Aktiv: boolean;
  end;
  TPnr = record
    Pnr: shortint;
    Pname: string[50];
    Rangnr: byte; //2Stellen
    Aktiv: boolean;
  end;
  TRang = record
    Rangnr: byte;
    Rangname: string[15];
    Aktiv: boolean;
  end;
  TAuftrag = record
    Auftragnr: shortint;
    Auftragbezeichnung: string[255];
    Aktiv: boolean;
  end;
  TAuftragPosition = record
    Auftragnr: shortint;
    Positionnr: byte;
    Positionbezeichnung: string[255];
  end;
  TStundenTag = record
    Pnr: shortint;
    Stunden: double;
    DatumJahr: shortint;
    DatumMonat: byte;
    DatumTag: byte;
    Aktiv: boolean;
  end;

TDateien=class(TObject)
  protected
    DateiName, ArrayName: string;
  public
  //List
    ListStunden: array of TStunden;
    ListPnr: array of TPnr;
    ListRang: array of TRang;
    ListAuftrag: array of TAuftrag;
    ListAuftragPosition: array of TAuftragPosition;
    ListStundenTag: array of TStundenTag;
    //Record
    RecordStunden: TStunden;
    RecordPnr: TPnr;
    RecordRang: TRang;
    RecordAuftrag: TAuftrag;
    RecordAuftragPosition: TAuftragPosition;
    RecordStundenTag: TStundenTag;
    constructor create (iDateiName, iArrayName: string);
    procedure Laden;
    procedure Speichern;
end;

implementation
constructor TDateien.create(iDateiName, iArrayName: string);
begin
  inherited create;
  DateiName := iDateiName;
  ArrayName := iArrayName;
end;

procedure TDateien.Laden;
var Current:integer;
f:file of TStunden;
begin
  assignfile(f,'dat/'+DateiName+'.dat');
  reset(f);
  SetLength(ArrayName,FileSize(f));
  Current:=0;
  while not eof(f) do
  begin
    read(f,ArrayName[Current]);
    inc(Current);
  end;
  closefile(f);

end;

procedure TDateien.Speichern;
begin

end;

end.



Zur Erklärung:
Ich habe hier eine Klasse TDateien.
Nun will ich in einer Hauptunit diese Klasse aufrufen und Parameter wie einen Dateinamen und einen Arraynamen übergeben.
Dann soll die entsprechende Datei geöffnet werden und in das entsprechende Record bzw. Array gelesen werden.
Diese Arrays will ich aber auch in der Hauptunit benutzen können.

Wenn ich in den Arrays in der Hauptunit was änder will ich das dann auch mit der speichern prozedur in die Datei schreiben.

Wie mach ich das am geschicktesten, dass ich die Arrays mit der recordstruktur auch in der Hauptunit benutzen kann?
Mach ich grundlegend was falsch? Ich blick gerade selber nicht mehr wirklich durch, ich hoffe ich habe meine Probleme einigermaßen schildern können.


Gruß,
Dennis


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am So 23.08.2009 um 22:27


jaenicke - Mo 24.08.09 00:15

Wenn du diese Unit in die uses-Klausel deiner Hauptunit einbindest, dann solltest du das alles auch direkt nutzen können. Ich verstehe nicht so ganz das Problem. :gruebel:

Was hast du denn versucht und was für ein Fehler kommt?