![]() |
public function
Hallo,
ich habe mal wieder eine Frage. Zu dem Thema habe ich weder im Internet noch in der Suchfunktion etwas Passendes gefunden. Aus anderen Programmiersprachen kenne ich Klassen, die man aus jedem anderen Programmteil wieder aufrufen kann. Ich habe herausgefunden, dass das bei Delphi function heißt. Wenn ich nun in der Unit der Form1 eine function erstelle, kann ich diese aber nicht, zum Beispiel, in der Unit der Form2 benutzen. In meiner Unit1 steht:
Delphi-Quellcode:
In einer anderen Unit will ich jetzt diese function benutzen. Hier steht:
function Test():boolean;
begin showMessage('test'); end;
Delphi-Quellcode:
Das funktioniert allerdings nicht.
Form1.Test();
Wie funktioniert das ganze?? Bei Java z.B. kan man Funktionen als public oder private deklarieren. Bei Delphi soll das auch möglich sein -> nur darauf, wie das genau geht komme ich irgendwie nicht. Ich hoffe ihr könnt mir helfen. Für produktive Antworten wäre ich sehr sehr dankbar. Mit freundlichen Grüßen rotte |
Re: public function
Schreibe den Funktionsheader noch in den Interface-Teil.
btw. Das ist keine Klasse, sondern eine simple Funktion. Sowas gibt es in Java nicht (mehr), da Java rein objektorintiert handelt. Es gibt dort nur Klassen, und um in Java ganz simple Funktionen (z.B. java.math) zu generieren nutzt man statische public Methoden. Letzteres geht in Delphi auch:
Delphi-Quellcode:
So etwas macht aber keiner, da hier der prozedurale Ansatz einfach angenehmer ist (ist Ansichtssache).
type
TMath=class public class function Max(a,b:Double):Double; ... end; |
Re: public function
Wow. Das ging aber schnell.
Danke für die Antwort. Habe das ganze jetzt mal ausprobiert, bekomme aber eine Fehlermeldung: [Error] UnitMain.pas(22): Unsatisfied forward or external declaration: 'TFormMain.Test' im Header meiner UnitMain steht:
Delphi-Quellcode:
Und in der anderen Unit steht das bereits im letzten Post erwähnte.
...
type TFormMain = class(TForm) Button1: TButton; Button2: TButton; LabelHeader: TLabel; Label1: TLabel; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public class function Test():boolean; end; ... function Test():boolean; begin showMessage('test'); end; Wo liegt der Fehler. :wiejetzt: Sorry, wenn ich mich vielleicht ein bisschen blöd anstelle :oops: |
Re: public function
Du musst dich entscheiden: Klassenmethode oder Funktion. Im ersteren Fall muss es in der Implementation auch heißen "class function TFormMain.Test: Boolean;".
|
Re: public function
Delphi-Quellcode:
function TFormMain.Test():boolean;
|
Re: public function
![]() und Codebeispiele helfen immer:
Delphi-Quellcode:
unit Unit1;
interface uses Classes, Controls, Forms; type TFoo = TObject; TForm1 = class(TForm) private { Private-Deklarationen } public function ObjPublicFunc: TFoo; // Im Objekt public { Public-Deklarationen } end; function TotalPublicFunc: TFoo; // Ich bin auch ohne ein Objekt in allen Units sichtbar var Form1: TForm1; implementation {$R *.dfm} function TotalPublicFunc: TFoo; begin Result := nil; end; { TForm1 } function TForm1.ObjPublicFunc: TFoo; begin Result := nil; end; end. |
Re: public function
Hmh, ich bekomme immer noch die Selbe Fehlermeldung.
Bin langsam am verzweifeln. Habe jetzt genau das aus dem Quellcode auf mich angewendet. |
Re: public function
Zeige mal deinen aktuellen Code.
|
Re: public function
Delphi-Quellcode:
unit UnitMain;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls; type TFormMain = class(TForm) Button1: TButton; Button2: TButton; LabelHeader: TLabel; Label1: TLabel; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public function test:boolean; end; function test:boolean; var FormMain: TFormMain; datei: textfile; implementation uses UnitMenu; {$R *.dfm} function test:boolean; begin showMessage('test'); end; |
Re: public function
Du hast die Änderungen auch nicht durchgeführt
Delphi-Quellcode:
function TFormMain.test:boolean;
begin showMessage('test'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 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