Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi prozeduren in seperate unit auslagern (wie?) (https://www.delphipraxis.net/13480-prozeduren-seperate-unit-auslagern-wie.html)

Praktikant 19. Dez 2003 11:43


prozeduren in seperate unit auslagern (wie?)
 
Mein Hauptformular ist inzwischen sehr unübersichtlich geworden, weshalb ich dachte ich lagere functionen aus.

Habe eine unit 'Anmeldung' erzeugt und da meine prozeduren reinverschoben.
Bei uses dannn noch im Hauptmenu mein Anmeldung eingetragen und in der unit anmeldung mein uses Hauptform = Hauptmenu.

Sieht dann so aus:
Delphi-Quellcode:
unit Anmeldung;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls, ExtCtrls, DBTables, Db, Grids, DBGrids;

  type
  TAnmeldung = class(TForm)      //darf man das so als TForm schreiben?!
    procedure Benutzerlogout;
    procedure ButtonLogin;
    procedure ButtonKWabbrechen;
  end;
implementation

uses Hauptmenu, UnitAuditTrail;
Aber wie kann ich nun von meinem Hauptformular (Hauptmenu) auf die prozeduren in der Unit Anmeldung zugreifen??

Bringt immer ne Syntax Fehlermeldung wenn ich dann auf ne Prozedur zugreifen will.

Smokey 19. Dez 2003 12:00

Re: prozeduren in seperate unit auslagern (wie?)
 
huhu!

Hat denn deine Unit Anmeldung auch Komponenten?
Oder sind da nur reine Funktionen drin?

Wenn es nur ne reine Codesammlung ohne Komponenten ist, mach am besten keine TForm draus, sondern ne stinknormale Unit.

Wenn du dann im "Hauptform" die separate Unit nur im Implementationsteil brauchst, reicht dein Verweis auf die neue Unit im USES-Teil unterhalb Implementation.

Benutzen allerdings Funktionen deines Hauptformulars Datentypen oder sonst was aus der Unit, musst du sie im Oberen Teil der Unit angeben.

Dann einmal die Separate Unit abspeichern und du kannst auf die Funktionen zugreifen ohne Probleme.

Hat die neue Unit Komponenten und muss also als TFORM deklariert sein, dann musst du logischerweise
ein create gemacht haben und kannst auf die funktionen über den variablennamen der Form Anmeldung zugreifen (zB. frm_Anmeldung.meinefunktion)

Phoenix 19. Dez 2003 12:05

Re: prozeduren in seperate unit auslagern (wie?)
 
Das war der falsche Ansatz. Du kannst die Methoden zu einer Klasse (in dem Moment gehören ja z.B. alle Methoden deines Menus dennuch zum Form) nicht in eine andere Unit auslagern.

Du musst z.B. nur den Implementation - Teil Deiner Unit in eine eigene Datei auslagern (z.B. mainmenu.pas) und diesen dann unter implementation anstelle des uses - Teil mit {$I mainmenu.pas} einbinden.

Dann klappt das auch.

Hier mal ein Beispiel:
Unit1.pas:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
{$I TForm1.pas} // <-- hier der include

end.
TForm1.pas:
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
   //do nothing
end;

Praktikant 19. Dez 2003 12:09

Re: prozeduren in seperate unit auslagern (wie?)
 
del *.*

da war jmd. schneller.
Ok, danke - werde mal probieren ob ich es hinbekomme :stupid:

@phoenix: danke, Nachbar (Rav rulez 8) )

Hmm, also habe jetzt so mein Hauptform ergänzt.
Nun bringt er aber die Fhelermeldung, dass er eine Deklaration erwartet aber uses findet (in der ausgelagerten pas).

Praktikant 22. Dez 2003 07:35

Re: prozeduren in seperate unit auslagern (wie?)
 
Moin,
also hab noch immer dasselbe Prob, dass ich die prozeduren nicht zum laufen bekomme, wenn ich diese ausgelagert und mit {x.pas} einbinde.
Kommt immer die Fehlermeldung, dass er eine Deklaration erwartet aber uses findet (in der ausgelagerten pas).

Muss diese anders aufgebaut sein, bzw. darf ich diese pas als unit erstellen?

scp 22. Dez 2003 07:44

Re: prozeduren in seperate unit auslagern (wie?)
 
Nein, du darfst diese .pas nicht als unit erstellen. Am Anfang muss die .pas komplett leer sein und dann brauchst du nur deine gewünschten proceduren dort einfügen.

Also ohne unit, uses, interface, implementation usw.

Praktikant 22. Dez 2003 08:01

Re: prozeduren in seperate unit auslagern (wie?)
 
ok, habe jetzt ein textfile erstellt und da meine prozeduren eingefügt. Dann als anmeldung.pas (unit) gespeichert. Aber ich schätze jetzt bin ich wieder gleich weit?!

Also wie genau jetzt :?

scp 22. Dez 2003 08:11

Re: prozeduren in seperate unit auslagern (wie?)
 
Jetzt kannst du die .pas ganz normal mit Delphi öffnen und deine prozeduren einfügen. Dann musst du nur noch
Delphi-Quellcode:
{$I Anmeldung.pas}
wie oben im Beispiel in die "alte" Unit eintragen.

fenni 22. Dez 2003 08:16

Re: prozeduren in seperate unit auslagern (wie?)
 
Hallo Praktikant,

deine anmeldung.pas ist ja keine Unit, sondern "nur" eine Datei, die Quelltext enthält. Dieser wird mit

Delphi-Quellcode:
{$I Anmeldung.pas}
eingebunden. Eine richtige Unit hat ein interface und wird auch als solche im Projekt eingefügt (mit uses).

MfG
fenni

Praktikant 22. Dez 2003 08:46

Re: prozeduren in seperate unit auslagern (wie?)
 
Das {$I Anmeldung\Anmeldung.pas} hatte ich bereits gemacht, aber ich habe wieder die Fehlermeldung (beim compilen), dass eine unit erwartet aber procedure gefunden wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 Uhr.
Seite 1 von 2  1 2      

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