![]() |
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 |
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. |
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.
|
Re: Geltungsbereich für Funktionen
Hallo hinmitsu,
Zitat:
Meine Funktion sieht folgendermaßen aus:
Delphi-Quellcode:
Wie muss ich jetzt unter { Public-Deklarationen } diese Funktion deklarien? Mit function lv(); wird ein Fehler gemeldet?
// 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) ... TedBomi |
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 ... |
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 |
Re: Geltungsbereich für Funktionen
Hallo DeddyH und jaenicke,
ich habe beide Varianten Probiert. Mit der Eintragung unter
Delphi-Quellcode:
kann in den betreffenden Formularen die Funktion nicht gefunden werden. Aber mit
public
function lv(Text: String; L: Integer): String
Delphi-Quellcode:
hatte ich mehr Glück. In allen relevanten Formularen kann ich jetzt meine Funtionen nutzen.
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; 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