Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi prozeduren auslagern (https://www.delphipraxis.net/107850-prozeduren-auslagern.html)

SaFu 3. Feb 2008 15:32

Re: prozeduren auslagern
 
Ok dann glaube ich hab ich das Konzept verstanden

Delphi-Quellcode:
unit Datenbankerzeugen;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,DB, DBTables, ComCtrls, Buttons, ColorGrd;

  procedure tabelleerst(F1Tabelle1: TTable; Serverpfad: string; F10Tabelle1 :TTable);

implementation

//======================Benutzertabelle erstellen===============================
procedure Tabelleerst(F1Tabelle1: TTable; Serverpfad:String; F10Tabelle1 :TTable);
Var pfad : string;
begin
F1Tabelle1.close;
   With F1Tabelle1 Do //Tabelle erzeugen
     begin
      DatabaseName:= Serverpfad + 'Datenbank\'; //Pfad zur Tabelle
      F10Tabelle1.DatabaseName:= Serverpfad + 'Datenbank\';
      TableName:= 'Benutzerverwaltung.DB';
      TableType:= ttParadox;
     end;
      if not FileExists( Serverpfad + 'Datenbank\Benutzerverwaltung.DB') then
        begin
          With F1Tabelle1 Do
            begin
              with FieldDefs Do //Datenfelder erzeugen
                begin
                 Clear;
                 Add('Nr.',ftAutoInc,0,True);
                 Add('Benutzername',ftString,30,True);
                 Add('Passwort',ftString,30,False);
                 Add('Administrator',ftboolean,0,False);
                 Add('Versuche',ftInteger,0,False);
                 Add('Gesperrt',ftString,5,False);
                end;
                  with IndexDefs do //Index Schlüssel erzeugen
                   begin
                    Clear;
                    Add('Nr','Nr.',[ixPrimary, ixUnique]); // Primär Index
                   end;
                    CreateTable;
                      begin  //User erzeugen
                       F1Tabelle1.Open; //Tabelle öffnen zum Schreiben
                       F1Tabelle1.Edit;
                       F1Tabelle1['Benutzername']:= 'Admin';
                       F1Tabelle1['Passwort']:= '123';
                       F1Tabelle1['Administrator']:= True;
                       F1Tabelle1['Versuche']:= 0;
                       F1Tabelle1['Gesperrt']:= 'Nein';
                       F1Tabelle1.Post; //Eintrag übernehmen
                       F1Tabelle1.Close; //Tabelle schließen
                      end;
                end;
        end;
     F1Tabelle1.Active:= True; //Tabelle1 auf Form1 aktivieren
     F10Tabelle1.Active:= True; //Tabelle1 auf Form10 aktivieren
end;
end.
Danke für den kleinen Crashkurs ist ganz einfach wenn man es so gezeigt bekommt.

Was wären den dies Überarbeitungen ich bin nämlich dabei den Code zu verbessern
Zitat:

Zitat von Matze
EInfach so erweitern:

Wobei ich fast denke, das grundlegende Konzept sollte komplett überarbeitet werden. Aber besser als so, wie du's bisher hast, ist es.


Matze 3. Feb 2008 15:37

Re: prozeduren auslagern
 
Ich finde es unlogisch, dass du gleichzeitig auf TTable verschiedener Formulare zugreifen musst.
Aber da ich dein Programm nicht kenne, kann ich auch nichts genaues dazu sagen, zumal mir dazu auch die Zeit fehlen würde.

SaFu 3. Feb 2008 15:39

Re: prozeduren auslagern
 
Ja das habe ich mitleiweile aus diesem Post mitbekommen und bin gerade dabei die die Komponenten von Form10 einafch auf die Table1 von Form1 zugreifen zulassen.

Somit spare ich mir einpaar Zeilen Code und Komponenten.


Wie gesagt danke nochmals

mkinzler 3. Feb 2008 15:43

Re: prozeduren auslagern
 
Dann hast du uns wohl missverstanden.

SaFu 3. Feb 2008 15:48

Re: prozeduren auslagern
 
Wie meinst du das???

Also dadurch das ich jetzt die Table und die Datasource von der Form10 entfernt habe und alles auf die Form1 umgeleitet (Datasource und Table von Form1) habe.

Ist es jetzt eindeutiger auf welche Table ich zugreife
und der Code sieht jetzt so aus
Delphi-Quellcode:
unit Datenbankerzeugen;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,DB, DBTables, ComCtrls, Buttons, ColorGrd;

  procedure tabelleerst(F1Tabelle1: TTable; Serverpfad: string);// hier ist es auch kürzer

implementation

//======================Benutzertabelle erstellen===============================
procedure Tabelleerst(F1Tabelle1: TTable; Serverpfad:String);
begin
F1Tabelle1.close;
   With F1Tabelle1 Do //Tabelle erzeugen
     begin
      DatabaseName:= Serverpfad + 'Datenbank\'; //Pfad zur Tabelle
      // hier fällt die Zeile weg
      TableName:= 'Benutzerverwaltung.DB';
      TableType:= ttParadox;
     end;
      if not FileExists( Serverpfad + 'Datenbank\Benutzerverwaltung.DB') then
        begin
          With F1Tabelle1 Do
            begin
              with FieldDefs Do //Datenfelder erzeugen
                begin
                 Clear;
                 Add('Nr.',ftAutoInc,0,True);
                 Add('Benutzername',ftString,30,True);
                 Add('Passwort',ftString,30,False);
                 Add('Administrator',ftboolean,0,False);
                 Add('Versuche',ftInteger,0,False);
                 Add('Gesperrt',ftString,5,False);
                end;
                  with IndexDefs do //Index Schlüssel erzeugen
                   begin
                    Clear;
                    Add('Nr','Nr.',[ixPrimary, ixUnique]); // Primär Index
                   end;
                    CreateTable;
                      begin  //User erzeugen
                       F1Tabelle1.Open; //Tabelle öffnen zum Schreiben
                       F1Tabelle1.Edit;
                       F1Tabelle1['Benutzername']:= 'Admin';
                       F1Tabelle1['Passwort']:= '123';
                       F1Tabelle1['Administrator']:= True;
                       F1Tabelle1['Versuche']:= 0;
                       F1Tabelle1['Gesperrt']:= 'Nein';
                       F1Tabelle1.Post; //Eintrag übernehmen
                       F1Tabelle1.Close; //Tabelle schließen
                      end;
                end;
        end;
     F1Tabelle1.Active:= True; //Tabelle1 auf Form1 aktivieren
 // hier fällt die Zeile weg
end;
Oder hab ich wirklich was falsch verstanden

mkinzler 3. Feb 2008 17:08

Re: prozeduren auslagern
 
Noch besser wäre es die Datenbankobjekte und die Prozedur in eine Datenmodul auszulagern.

SaFu 3. Feb 2008 17:15

Re: prozeduren auslagern
 
Was ist den ein Datenmodul??

Sorry das ich so dumm Frage aber wer nicht fragt, lehrnt auch nichts dazu.

DeddyH 3. Feb 2008 17:16

Re: prozeduren auslagern
 
Datei - Neu - Datenmodul
Da kommen alle nicht-visuellen DB-Controls rein.

mkinzler 3. Feb 2008 17:17

Re: prozeduren auslagern
 
Ein Datenmodul ist eine nichtvisuelle formularänhliche Klasse, die dazu dient Datenbankobjekte aufzunehmen.

SaFu 3. Feb 2008 17:19

Re: prozeduren auslagern
 
Was ist den der vorteil vom Datenmodul


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr.
Seite 3 von 4     123 4      

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