AGB  ·  Datenschutz  ·  Impressum  







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

kann man alle wichtigen Funktionen auslagern ?

Offene Frage von "LingNeu"
Ein Thema von LingNeu · begonnen am 13. Jan 2007 · letzter Beitrag vom 21. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#1

kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 18:41
Hallo Delphifans,
ist es möglich, die verschiedenen, selbstgeschriebenen Funktionen in einer eigenen Datei unterzubringen?
Habe schon mal in einem Buch gewälzt, da steht aber nichts drin, ausser das man in Units sowas machen kann, leider kein Beispiel.
Gibt es noch eine andere Möglichkeit, seinen Code etwas zu strukturieren.
In der Zwischenzeit hat mein Programm (eine Unit) über 3000 Zeilen und ich wollte einige Funktionen und Proceduren auslagern.
Leider krieg ich das nicht hin - ohne ein Bombardement von Fehlern.
Das Programm funktioniert ja, aber ich bin halt ein bischen ein Perfektionist und da würde ich gerne, die Sache etwas verbessern.
Vielleicht hat einer von euch Profis einen guten Tipp für mich.
Wäre wirklich sehr dankbar für einen Hinweis oder ein kleines Beispiel.
vielen Dank und schöne Grüsse
LingNeu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 18:57
Einfach Funktionen in eiegene Unit auslagern und diese dann unter Uses einbinden.
Mit welchen Fehlern wist du bombardiert?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 19:06
Unit ist genau das richtige Stichwort.
Mal ein Beispiel, wie Du die Prozeduren Test1, Test2 und den Typ TTest in eine Unit schreibst (Name der Unit musst Du noch selbst festlegen, heißt hier als Beispiel: NameDeinerUnit):
Delphi-Quellcode:
unit NameDeinerUnit;

interface

uses
  //alle Units die für diese Unit gebraucht werden

type
  TTest = ...
    ...
  end;

procedure Test1(...);
procedure Test2(...);

implementation

//ggf. kommt hier noch was von TTest hin

procedure Test1(...);
begin
  //hier der Code
end;

procedure Test2(...);
begin
  //hier der Code
end;

end.
Diese Unit (Dateiname: NameDeinerUnit.pas) muss dann in das aktuelle Verzeichnis (wo das Projekt ist, in dem du die Unit nutzen willst), oder in das Verzeichnis C:\Programme\Borland\<DelphiVersion>\Lib, falls du diese Unit in Zukunft immer zur Verfügung haben möchtest, für mehrere Projekte.

Um diese Unit dann in deinem aktuellen Projekt nutzen zu können, musst du sie bei deinem Projekt (dort in der Unit, in der die andere Unit verwendet werden soll) unter uses auflisten, etwa so:
Delphi-Quellcode:
unit Unit1;

interface

uses
  {hier steht schon einiges}, NameDeinerUnit;

{...}
Grüße, Martin
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 19:17
@mkinzler
Es kommt immer "undefinierter Bezeichner: Dauer"

Delphi-Quellcode:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;
implementation
uses unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
//rest
label3.Caption := Dauer(now);
end;

Delphi-Quellcode:
unit Unit2;

interface
function Dauer(ADate: TDateTime): string;

implementation

function Dauer(ADate: TDateTime): string;
//rest
end;
  Mit Zitat antworten Zitat
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 20:06
Hi,
Du die Unit2 hier einschreiben
Delphi-Quellcode:
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2; // <-- Hier
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
LingNeu

Registriert seit: 18. Dez 2006
164 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 20:57
@C.Schoch
danke für Deinen Hinweis. Ich habe unter den uses die Unit2 reingesetzt. Jetzt geht die Sache. Kann man noch was machen, weil noch eine Unbekannte Funktion angemahnt wurde.
Die war in der Funktion Dauer (DecodeDate)
Erst als ich die Zeile Uses mit den Angaben von der Unit1 reingesetzt habe, funktionierte die Sache richtig.
Mein Frage wäre, wie kann ich feststellen, welche uses-Eintragung ich brauche, da ich momentan alle von der Unit1 eingefügt habe. Vermutlich ist die DecodeDate in der SysUtils drin.
Gibt es keine Möglichkeit auf diese Angaben zu verzichten, damit es trotzdem funktiont, auch wenn nur in der Unit1 die Angaben sind. Jetzt sind sozusagen in beiden Units unter uses die gleichen Eintragungen - ist das richtig ?
Besten Dank nochmals

Delphi-Quellcode:
unit Unit2;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
function Dauer(ADate: TDateTime): string;

implementation

function Dauer(ADate: TDateTime): string;
//rest z.B. DecodeDate()
end;
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 20:59
Du solltest die Unit SysUtils in Dein Unit2 einbinden.
Dann brauchst Du nicht die Unit1 in die Unit2 einbinden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#8

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 13. Jan 2007, 22:04
Zu der Uses-Klausel in der eigenen Unit noch ein kleiner Tipp: Wenn du wirklich nicht weißt, in welcher Unit die gesuchte Prozedur oder Funktion steht, kannst du einfach alle Units eines Standardprojekts (solange sie in den Standardunits mit Sicherheit enthalten sind, da muss man halt schauen) in deine Unit reinschreiben (uses-Klausel) und dann knall einfach wieder die nicht benötigten Units raus.
  Mit Zitat antworten Zitat
Christoph Frank

Registriert seit: 6. Mär 2007
26 Beiträge
 
#9

Re: kann man alle wichtigen Funktionen auslagern ?

  Alt 20. Mär 2007, 12:41
Hallo zusammen,

zu diesem Thema habe ich auch noch eine Frage.
In meiner Anwendung habe ich ein Formular mit unterschiedlichen Komponenten Edit, Button usw. In Abhängigkeit der Verarbeitung müssen die Komponenten enabeld oder disabled werden. Diese Routinen blähen mein Main ziemlich auf und ich möchte sie in eine eigene unit auslagern, wegen der Übersicht.
Wie kann ich in dieser unit die in der Form1 festgelgten Komponenten ansprechen?
Also:
In der Unit1 von Form1 befindet sich ein Edit1-Feld.
In MeinUnit ist die procedure InaktivMachen in der ich Edit1.Enabled := false; setzen möchte.
MeinUnit kennt natürlich das Edit1-Feld aus Form1-Unit1 nicht und da liegt mein Problem.

Für baldige Hilfe bin ich sehr dankbar.
  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: kann man alle wichtigen Funktionen auslagern ?

  Alt 20. Mär 2007, 12:44
Hi,

du musst lediglich in den uses ein Formular (hier: Form1) einbinden und kannst dann mit

Form1.Edit.Enabled := true; darauf zugreifen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:33 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