Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Geltungsbereich für Funktionen (https://www.delphipraxis.net/137360-geltungsbereich-fuer-funktionen.html)

tedbomi 19. Jul 2009 13:41


Geltungsbereich für Funktionen
 
Hallo Leute,

Ich habe ein Programm mit mehreren Formularen geschrieben, die ich mit Form2.Show usw. aufrufe.

In uses habe ich die einzelnen Formulare namentlich implementiert.

For das Formular 1 habe ich eine Funktion geschrieben, diese lässt sich aber leider nicht in den anderen Formularen nutzen.

Wie und wo kann ich diese Funktion für die anderen Formulare nutzbar machen oder muss ich in jedem Formular die Funktion erneut schreiben?

Ich würde mich über Anregungen freuen

TedBomi

jaenicke 19. Jul 2009 13:44

Re: Geltungsbereich für Funktionen
 
Wie meinst du das? Eine Methode innerhalb einer Formular-Klasse?

Wenn es eine allgemeine Routine ist, dann wäre es am sinnvollsten diese auszulagern in eine weitere Unit.

himitsu 19. Jul 2009 13:58

Re: Geltungsbereich für Funktionen
 
solange die Funktion/Methode mindestens als Public deklariert ist, sollte sie sich auch in anderen Units nutzen lassen ... genauso wie bei jeder anderen Klasse auch der Fall ist.

tedbomi 19. Jul 2009 17:47

Re: Geltungsbereich für Funktionen
 
Hallo hinmitsu,

Zitat:

solange die Funktion/Methode mindestens als Public deklariert ist, sollte sie sich auch in anderen Units nutzen lassen ... genauso wie bei jeder anderen Klasse auch der Fall ist
.

Meine Funktion sieht folgendermaßen aus:


Delphi-Quellcode:
// gewünschte Länge des Strings wird mit vorgestellten Leerzeichen erstellen

function lv(Text: String; L: Integer): String;
begin
    If Length(Text) < L then Text:=StringOfChar(' ',L-Length(Text))+Text;
    If Length(Text) > L then Text:=Copy(Text,1,L) ;
    If Length(Text) = L then Text:=Text;
    Result:=Text;
  end;


//aus 'Bild' wird '   Bild'
...
Test:= 'Bild']
Test:= lv(Test,8)
...
Wie muss ich jetzt unter { Public-Deklarationen } diese Funktion deklarien? Mit function lv(); wird ein Fehler gemeldet?

TedBomi

jaenicke 19. Jul 2009 18:00

Re: Geltungsbereich für Funktionen
 
Da fehlt dann ja auch das TFormX in dem Methodenkopf dann.
Delphi-Quellcode:
TFormX = class...

public
  function lv(Text: String; L: Integer): String;
end;

...

function TFormX.lv(Text: String; L: Integer): String;
begin
...

DeddyH 19. Jul 2009 18:18

Re: Geltungsbereich für Funktionen
 
Da es sich um eine einfache Funktion und keine Methode zu handeln scheint, genügt es, den Prototyp im interface-Teil bekannt zu machen.
Delphi-Quellcode:
unit ... //usw. usf.

interface

uses ...

... //Deklaration der Form-Klasse etc.

function lv(Text: String; L: Integer): String;

implementation

tedbomi 20. Jul 2009 10:46

Re: Geltungsbereich für Funktionen
 
Hallo DeddyH und jaenicke,

ich habe beide Varianten Probiert. Mit der Eintragung unter

Delphi-Quellcode:
public
  function lv(Text: String; L: Integer): String
kann in den betreffenden Formularen die Funktion nicht gefunden werden. Aber mit

Delphi-Quellcode:
unit Module;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Printers, ExtDlgs;
  function lv(Text: String; L: Integer): String;


...


implementation

uses Module;
hatte ich mehr Glück. In allen relevanten Formularen kann ich jetzt meine Funtionen nutzen.


DeddyH und jaenicke, vielen Dank für die Hinweise


Gruß TedBomi


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.

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