AGB  ·  Datenschutz  ·  Impressum  







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

Geltungsbereich für Funktionen

Ein Thema von tedbomi · begonnen am 19. Jul 2009 · letzter Beitrag vom 20. Jul 2009
Antwort Antwort
tedbomi

Registriert seit: 27. Mai 2009
Ort: Rostock
17 Beiträge
 
#1

Geltungsbereich für Funktionen

  Alt 19. Jul 2009, 14:41
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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Geltungsbereich für Funktionen

  Alt 19. Jul 2009, 14:44
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Geltungsbereich für Funktionen

  Alt 19. Jul 2009, 14:58
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.
$2B or not $2B
  Mit Zitat antworten Zitat
tedbomi

Registriert seit: 27. Mai 2009
Ort: Rostock
17 Beiträge
 
#4

Re: Geltungsbereich für Funktionen

  Alt 19. Jul 2009, 18:47
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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Geltungsbereich für Funktionen

  Alt 19. Jul 2009, 19:00
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
...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Geltungsbereich für Funktionen

  Alt 19. Jul 2009, 19:18
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
tedbomi

Registriert seit: 27. Mai 2009
Ort: Rostock
17 Beiträge
 
#7

Re: Geltungsbereich für Funktionen

  Alt 20. Jul 2009, 11:46
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:12 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