AGB  ·  Datenschutz  ·  Impressum  







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

prozeduren auslagern

Ein Thema von SaFu · begonnen am 3. Feb 2008 · letzter Beitrag vom 3. Feb 2008
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

prozeduren auslagern

  Alt 3. Feb 2008, 14:26
Ich weis das dieses Thema schon oft behandelt wurde, habe auch etwas hier schon nach gelesen.
Aber ich komme nicht auf die Lösung.

Wie bekomme ich meine Procedure ausgelagert in eine andere Unit.
Und wie Rufe ich Sie wieder auf.

Habe das soweit geschrieben damit erzeuge ich eine Datenbank ich habe davon noch mehr und würde sie gerne alles auslagern.

Die Komponenten sitzen aber auf der Form1 geht das so überhaupt??

Delphi-Quellcode:
unit Datenbankerzeugen;

interface

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

type
 TDatenbankerzeugen = class(TForm)
 procedure tabelleerst;

  private
   pfad : string;
  end;

implementation

Uses Unit1,unit10;

//======================Benutzertabelle erstellen===============================
procedure TDatenbankerzeugen.Tabelleerst;
begin
Form1.Table1.close;
  getdir(0,Pfad);
   With Form1.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 Form1.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
                       Form1.Table1.Open; //Tabelle öffnen zum Schreiben
                       Form1.Table1.Edit;
                       Form1.Table1['Benutzername']:= 'Admin';
                       Form1.Table1['Passwort']:= '123';
                       Form1.Table1['Administrator']:= True;
                       Form1.Table1['Versuche']:= 0;
                       Form1.Table1['Gesperrt']:= 'Nein';
                       //Table1['Versuche']:= 'Nein';
                       Form1.Table1.Post; //Eintrag übernehmen
                       Form1.Table1.Close; //Tabelle schließen
                      end;
                end;
        end;
     Form1.Table1.Active:= True; //Tabelle1 auf Form1 aktivieren
     Form10.Table1.Active:= True; //Tabelle1 auf Form10 aktivieren
end;
end.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:32
Übergebe die Form als Parameter.

BTW. Man sollte vermeiden feste Instanzen zu adressieren!!!!
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:34
Zitat von mkinzler:
Übergebe die Form als Parameter.

BTW. Man sollte vermeiden feste Instanzen zu adressieren!!!!
Was meinst du damit
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:39
meinst du etwa so??
Delphi-Quellcode:
unit Datenbankerzeugen;

interface

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

  procedure tabelleerst;

implementation

Uses Unit1,unit10;

//======================Benutzertabelle erstellen===============================
procedure Tabelleerst;
Var pfad : string;
begin

Form1.Table1.close;
  getdir(0,Pfad);
   With Form1.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 Form1.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
                       Form1.Table1.Open; //Tabelle öffnen zum Schreiben
                       Form1.Table1.Edit;
                       Form1.Table1['Benutzername']:= 'Admin';
                       Form1.Table1['Passwort']:= '123';
                       Form1.Table1['Administrator']:= True;
                       Form1.Table1['Versuche']:= 0;
                       Form1.Table1['Gesperrt']:= 'Nein';
                       Form1.Table1.Post; //Eintrag übernehmen
                       Form1.Table1.Close; //Tabelle schließen
                      end;
                end;
        end;
     Form1.Table1.Active:= True; //Tabelle1 auf Form1 aktivieren
     Form10.Table1.Active:= True; //Tabelle1 auf Form10 aktivieren
end;
end.
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:40
Da deine Funktion so eng mit deinem Programm verbunden ist, macht eine Auslagerung wenig sinn.

Mit festen Instanzen meine ich Form1, Form19 usw.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:44
Ich wollte halt nur den Quelltext für die Datenbanken in eine Unit schreiben, da demnächst so an die 20 Dadtenbanken noch dazu kommen.

Und Deshalb wollte ich das etwas sotiert haben und übersichtlicher.

Ist das den Falsch wenn ich das so mach rein vom Programmieren her.

Habe es auch schon wie ich dann die Procedure in einer anderen Unit aufrufe.

Datenbankerzeugen.tabelleerst; War ja garnet so schwer
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:48
Ich würde auf alle Fälle versuchen, das allgemeiner zu programmieren, sicher hast du durch OOP auch einige Vorteile, wobei ich nicht weiß, welche 20 Dinge dazu kommen.

Sonst übergibt lieber im Parameter ein TTable-Objekt und arbeite mit diesem dann, damit die Funktion unabhängig von Formularen und den darauf sitzenden Controls ist:

procedure Tabelleerst(MyTable: TTable); Nur um eine Verbesserung zu nennen.
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:55
Ich kpier das nicht so ganz.

Wie bekomme ich die Verbindung zur Komponete her??
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:57
In dem du diese der Prozedur übergibst:

Tabelleerst( Form1.Table);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: prozeduren auslagern

  Alt 3. Feb 2008, 14:59
Das Beispiel zu Form1.Table könnte grob so aussehen:

Delphi-Quellcode:
procedure Tabelleerst(MyTable: TTable);
var
  pfad : string;
begin
  MyTable.Close;

// ...
Der Aufruf der Prozedur erfolgt aus Form1 dann so:

Tabelleerst(Table1);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 05:52 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