AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Daten zu DB hinzufügen

Ein Thema von Molzer · begonnen am 13. Jan 2009 · letzter Beitrag vom 13. Jan 2009
Antwort Antwort
Molzer

Registriert seit: 7. Dez 2008
70 Beiträge
 
#1

Daten zu DB hinzufügen

  Alt 13. Jan 2009, 18:49
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.
Miniaturansicht angehängter Grafiken
pr_sentation1_869.png  
Meine Version:
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Daten zu DB hinzufügen

  Alt 13. Jan 2009, 19:04
*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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Molzer

Registriert seit: 7. Dez 2008
70 Beiträge
 
#3

Re: Daten zu DB hinzufügen

  Alt 13. Jan 2009, 19:14
nein glaub ich nicht ...

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.
Meine Version:
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Daten zu DB hinzufügen

  Alt 13. Jan 2009, 19:18
Ich zitiere mich nochmal selbst:
Zitat von DeddyH:
- Trenne Logik und Darstellung, d.h. die Daten werden in Deinen Klassen/Records abgelegt und in den VCL-Komponenten lediglich dargestellt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Molzer

Registriert seit: 7. Dez 2008
70 Beiträge
 
#5

Re: Daten zu DB hinzufügen

  Alt 13. Jan 2009, 19:44
danke für die tips.. habs geschafft!!

lg
Meine Version:
Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2 Copyright © 2005 Borland® Software Corporation.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Daten zu DB hinzufügen

  Alt 13. Jan 2009, 19:46
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz