Delphi-PRAXiS
Seite 2 von 4     12 34      

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:01

Re: prozeduren auslagern
 
Ok wäre es so richtig?

Delphi-Quellcode:
unit Datenbankerzeugen;

interface

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

  procedure tabelleerst(Table1: TTable);

implementation

Uses Unit1,unit10;

//======================Benutzertabelle erstellen===============================
procedure Tabelleerst(Table1: TTable);
Var pfad : string;
begin
Table1.close;
  getdir(0,Pfad);
   With Table1 Do //Tabelle erzeugen
     begin
      DatabaseName:= Form1.Serverpfad + 'Datenbank\'; //Pfad zur Tabelle
      Form10.Table1.DatabaseName:= Form1.Serverpfad + 'Datenbank\';
      TableName:= 'Benutzerverwaltung.DB';
      TableType:= ttParadox;
     end;
      if not FileExists( Form1.Serverpfad + 'Datenbank\Benutzerverwaltung.DB') then
        begin
          With Table1 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
                       Table1.Open; //Tabelle öffnen zum Schreiben
                       Table1.Edit;
                       Table1['Benutzername']:= 'Admin';
                       Table1['Passwort']:= '123';
                       Table1['Administrator']:= True;
                       Table1['Versuche']:= 0;
                       Table1['Gesperrt']:= 'Nein';
                       Table1.Post; //Eintrag übernehmen
                       Table1.Close; //Tabelle schließen
                      end;
                end;
        end;
     Table1.Active:= True; //Tabelle1 auf Form1 aktivieren
     Form10.Table1.Active:= True; //Tabelle1 auf Form10 aktivieren
end;
end.
Aufruf in der anderen Unit:

Delphi-Quellcode:
Datenbankerzeugen.tabelleerst(Table1);

Matze 3. Feb 2008 15:03

Re: prozeduren auslagern
 
Das sieht schon besser aus. Nur die anderen paar Formx. stören etwas.

Versuche es immer möglichst allgemein zu halten, dass du, falls du etwas am Programm änderst, nicht den kompletten Quelltext überarbeiten musst, sondern nur einen kleinen Teil.

mkinzler 3. Feb 2008 15:05

Re: prozeduren auslagern
 
-Warum Table1?
-
Zitat:

Delphi-Quellcode:
Form10.Table1.DatabaseName:= Form1.Serverpfad + 'Datenbank\';

Zitat:

Delphi-Quellcode:
if not FileExists( Form1.Serverpfad + 'Datenbank\Benutzerverwaltung.DB') then

Zitat:

Delphi-Quellcode:
Form10.Table1.Active:= True; //Tabelle1 auf Form10 aktivieren

hast du noch eine feste Referenzen
-was macht
Delphi-Quellcode:
getdir(0,Pfad);
?

SaFu 3. Feb 2008 15:12

Re: prozeduren auslagern
 
Delphi-Quellcode:
getdir(0,Pfad);
Kann ich rauswerfen überbleibsel vom Anfang hab ich übersehen.

Delphi-Quellcode:
Warum Table1
Form10.Table1.DatabaseName:= Form1.Serverpfad + 'Datenbank\';
Weil auf der Form10 auch die Table sitzt nur ich habe sie auch so genant

Kann man den Serverpfad auch auslagern ohne das er Fest ist.
Muss ich mir dazu den Code auf die Unit holen??

mkinzler 3. Feb 2008 15:13

Re: prozeduren auslagern
 
Du könntest ihn als weiteren Parameter übergeben.

SaFu 3. Feb 2008 15:16

Re: prozeduren auslagern
 
Würde es nicht langen diese Variable als published zu veröffentlichen

mkinzler 3. Feb 2008 15:18

Re: prozeduren auslagern
 
Dann wäre sie eine Eigenschaft einer bestimmten Formularklasse und keine allgemeinen. Deshalb besser als Parameter.

SaFu 3. Feb 2008 15:20

Re: prozeduren auslagern
 
Ok ich glaube ich habe das mit den Parametern icht ganz verstanden.

Ich Schreibe Jetzt einfach eine neue Procedure in die ich das Aktivieren der Table1 auf Form10 also

Delphi-Quellcode:
Form10.Table1.Active:= True; //Tabelle1 auf Form10 aktivieren
lege und übergebe diese als Parameter??

mkinzler 3. Feb 2008 15:21

Re: prozeduren auslagern
 
Nein:
Delphi-Quellcode:
procedure Tabelleerst(MyTable: TTable; Pfad: string);

Matze 3. Feb 2008 15:23

Re: prozeduren auslagern
 
EInfach so erweitern:

Delphi-Quellcode:
procedure Tabelleerst(FirstTable: TTable, SecondTable: TTable);
Der Aufruf:

Delphi-Quellcode:
Tabelleerst(Table1, Form10.Table10);
Wobei ich fast denke, das grundlegende Konzept sollte komplett überarbeitet werden. Aber besser als so, wie du's bisher hast, ist es.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.
Seite 2 von 4     12 34      

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