unit cdvu;
const
MaxTonTraeger = 1000;
MaxStueckeProCD = 20;
type
TSpalte = (colTitel, colInterpret, colTyp, colJahr, colKategorie);
type
TEntlehner =
record
Name:
string;
PLZ: Integer;
Ort:
string;
Strasse:
string;
TelNr:
string;
end;
TDatum =
record
Tag, Monat, Jahr: Integer;
end;
TStueck =
class
Titel:
string;
Interpret:
string;
Komponist:
string;
end;
TTonTraeger =
class
Titel:
string;
Interpret:
string;
Typ:
string;
Jahr: Integer;
Stuecke:
array[1..MaxStueckeProCD]
of TStueck;
Kategorie:
string;
Entlehner: TEntlehner;
Entlehndatum: TDatum;
constructor Create;
destructor Free;
end;
TDatenbank =
class
CDDaten:
array[1..MaxTonTraeger]
of TTonTraeger;
constructor Create;
destructor Free;
end;
private
{ Private-Deklarationen }
public
DB: TDatenbank;
AnzahlCD: Integer;
CDCurrent: Integer;
{ Public-Deklarationen }
end;
var
Hauptformular: THauptformular;
implementation
{$R *.DFM}
uses Zeile, NTH;
procedure THauptformular.FormCreate(Sender: TObject);
var i: Integer;
begin
// CDDaten konstruieren
DB := TDatenbank.Create;
// Formular-Initialisierungen
CDAnzeige.Cells[Ord(colTitel), 0] := '
Titel';
CDAnzeige.Cells[Ord(colInterpret),0] := '
Interpret';
CDAnzeige.Cells[Ord(colTyp) ,0] := '
Typ';
CDAnzeige.Cells[Ord(colJahr), 0] := '
Jahr';
CDAnzeige.Cells[Ord(colKategorie),0] := '
Kategorie';
Entlehner.Cells[0,0] := '
Ausleihdaten:';
Entlehner.Cells[1,0] := '
Name';
Entlehner.Cells[2,0] := '
PLZ';
Entlehner.Cells[3,0] := '
Ort';
Entlehner.Cells[4,0] := '
Straße+Nr';
Entlehner.Cells[5,0] := '
TelNr';
Entlehner.Cells[6,0] := '
Ausleihdatum';
TrackAnzeige.Cells[0,0] := '
Nr';
TrackAnzeige.Cells[1,0] := '
Stück-Titel';
TrackAnzeige.Cells[2,0] := '
Interpret';
TrackAnzeige.Cells[3,0] := '
Komponist';
for i:=1
to 20
do
TrackAnzeige.Cells[0,i] := IntToStr(i);
end;
procedure THauptformular.FormDestroy(Sender: TObject);
begin
DB.Free;
end;
procedure THauptformular.Oeffnen1Click(Sender: TObject);
var F: TextFile;
Zeile:
string;
Z, ZD: TZeile;
CDIndex, StueckIndex: Integer;
begin
CDIndex := 0;
if OpenDialog.Execute
then
begin
AssignFile(F, OpenDialog.FileName);
Reset(F);
while not EOF(F)
do
begin
CDIndex := CDIndex + 1;
with DB.CDDaten[CDIndex]
do
begin
// Titel, Interpret
ReadLn(F, Zeile);
Z := TZeile.Create(Zeile, '
|');
Titel := Z.Next;
Interpret := Z.Next;
// Typ, Jahr, Kategorie
ReadLn(F, Zeile);
Z.Create(Zeile, '
|');
// Z neu initialisieren
Typ := Z.Next;
Jahr := StrToInt(Z.Next);
Kategorie := Z.Next;
// Entlehndaten: Entlehndatum, Name, PLZ, Ort, Straße, TelNr
ReadLn(F, Zeile);
Z.Create(Zeile, '
|');
// Z neu initialisieren
ZD := TZeile.Create(Z.Next, '
/');
with Entlehner
do
begin
Entlehndatum.Jahr := StrToIntDef(ZD.Next, 0);
Entlehndatum.Monat := StrToIntDef(ZD.Next, 0);
Entlehndatum.Tag := StrToIntDef(ZD.Next, 0);
Name := Z.Next;
PLZ := StrToIntDef(Z.Next,0);
Ort := Z.Next;
Strasse := Z.Next;
TelNr := Z.Next;
end;
end;
// Stuecke
for StueckIndex:=1
to MaxStueckeProCD
do
with DB.CDDaten[CDIndex].Stuecke[StueckIndex]
do
begin
ReadLn(F, Zeile);
Z.Create(Zeile, '
|');
// Z neu initialisieren
Z.Next;
// Track-Nr. wird nicht verwendet
Titel := Z.Next;
Interpret := Z.Next;
Komponist := Z.Next;
end;
end;
end;
CloseFile(F);
AnzahlCD := CDIndex;
CDCurrent := 0;
if AnzahlCD > 0
then
begin
CDsAnzeigen;
CDCurrent := 1;
//StueckeAnzeigen(CDCurrent);
end;
end;
procedure THauptformular.Beenden1Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure THauptformular.CDsAnzeigen;
var CDIndex: Integer;
begin
for CDIndex:=1
to AnzahlCD
do
with DB.CDDaten[CDIndex]
do
begin
CDAnzeige.RowCount := 1 + AnzahlCD;
CDAnzeige.Cells[Ord(colTitel), CDIndex] := Titel;
CDAnzeige.Cells[Ord(colInterpret),CDIndex] := Interpret;
CDAnzeige.Cells[Ord(colTyp), CDIndex] := Typ;
CDAnzeige.Cells[Ord(colJahr), CDIndex] := IntToStr(Jahr);
CDAnzeige.Cells[Ord(colKategorie),CDIndex] := Kategorie;
end;
end;
constructor TTontraeger.Create;
var i:Integer;
begin
for i := 1
to MaxStueckeProCD
do
Stuecke[i] := TStueck.Create;
end;
destructor TTontraeger.Free;
var i:Integer;
begin
for i := 1
to MaxStueckeProCD
do
Stuecke[i].Free;
end;
constructor TDatenbank.Create;
var i:Integer;
begin
for i:=1
to MaxTonTraeger
do
CDDaten[i] := TTontraeger.Create;
end;
destructor TDatenbank.Free;
var i:Integer;
begin
for i:=1
to MaxTonTraeger
do
CDDaten[i].Free;
end;
end.