![]() |
Daten zu DB hinzufügen
Liste der Anhänge anzeigen (Anzahl: 1)
HI!!
Würde gerne daten von meiner nth.pas zu meiner db in der cdv.pas hinzufügen und schaffe es nicht. Da es sehr viel zu lesen ist weiß ich nicht ob mir jemand helfen will, wenn nicht auch OK! möchte die eingaben von nth.pas in der db von der cdv.pas speichern..
Delphi-Quellcode:
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.
Delphi-Quellcode:
unit NTH;
var j,x:integer; StueckIndex: Integer; cdindex:integer; procedure TForm1.Button1Click(Sender: TObject); begin Hauptformular.CdAnzeige.Rowcount:=Hauptformular.CdAnzeige.Rowcount+1; x:=Hauptformular.CdAnzeige.Rowcount-1; Hauptformular.DB.CDDaten[2].Titel:= CDAnzeige.Cells[0,1]; Hauptformular.CDAnzeige.Cells[Ord(colInterpret),CDIndex+x]:= CDAnzeige.Cells[1,1]; Hauptformular.CDAnzeige.Cells[Ord(colTyp), CDIndex+x]:= CDAnzeige.Cells[2,1]; Hauptformular.CDAnzeige.Cells[Ord(colJahr), CDIndex+x]:= CDAnzeige.Cells[3,1]; Hauptformular.CDAnzeige.Cells[Ord(colKategorie),CDIndex+x]:= CDAnzeige.Cells[4,1]; Hauptformular.CDCurrent:= Hauptformular.CdAnzeige.Rowcount; end. |
Re: Daten zu DB hinzufügen
*Uiuiui*, Du glaubst nicht im Ernst, dass jemand jetzt die Hunderte von Zeilen Quellcode Zeile für Zeile durchgeht, oder? Trotzdem ein paar Anmerkungen:
- Du deklarierst Deine Records und Klassen in beiden Units, das ist nicht so doll, schreib lieber eine eigen Unit dafür und binde diese dann in beiden Formularen ein. - Der Destruktor darf nicht Free, sondern muss Destroy heißen. - Trenne Logik und Darstellung, d.h. die Daten werden in Deinen Klassen/Records abgelegt und in den VCL-Komponenten lediglich dargestellt. - Statt mit statischen Arrays solltest Du mit dynamischen Arrays oder mit Listen arbeiten. Das sind die Punkte, die mir gleich ins Auge gefallen sind, vermutlich gibt es noch mehr, aber das soll erstmal reichen. |
Re: Daten zu DB hinzufügen
nein glaub ich nicht :-D ...
die records und klassen habe ich schon entfernt.. danke.. mein hauptproblem ist wie ich in die db in der cdv.pas was speichere??bzw anspreche?? so kann ich zwar eine zeile hinzufügen, aber sie ist nicht in der db..
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Hauptformular.CdAnzeige.Rowcount:=Hauptformular.CdAnzeige.Rowcount+1; x:=Hauptformular.CdAnzeige.Rowcount-1; Hauptformular.DB.CDDaten[2].Titel:= CDAnzeige.Cells[0,1]; Hauptformular.CDAnzeige.Cells[Ord(colInterpret),CDIndex+x]:= CDAnzeige.Cells[1,1]; Hauptformular.CDAnzeige.Cells[Ord(colTyp), CDIndex+x]:= CDAnzeige.Cells[2,1]; Hauptformular.CDAnzeige.Cells[Ord(colJahr), CDIndex+x]:= CDAnzeige.Cells[3,1]; Hauptformular.CDAnzeige.Cells[Ord(colKategorie),CDIndex+x]:= CDAnzeige.Cells[4,1]; Hauptformular.CDCurrent:= Hauptformular.CdAnzeige.Rowcount; end. |
Re: Daten zu DB hinzufügen
Ich zitiere mich nochmal selbst:
Zitat:
|
Re: Daten zu DB hinzufügen
danke für die tips.. habs geschafft!!
lg |
Re: Daten zu DB hinzufügen
:thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz