Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [function] Ungenügend Forward- oder External-Deklaration (https://www.delphipraxis.net/114468-%5Bfunction%5D-ungenuegend-forward-oder-external-deklaration.html)

f4k3 26. Mai 2008 07:41


[function] Ungenügend Forward- oder External-Deklaration
 
Moin Moin liebe DP'ler ;),

hab ne funktion geschrieben die sich um das Anmelden von benutzern kümmern soll.
Ich bekomm die Fehlermeldung...

[DCC Fehler] form.login.pas(26): E2065 Ungenügend Forward- oder External-Deklaration: 'TfLogin.Anmeldung'

meine Deklaration sieht folgendermaßen aus:

Delphi-Quellcode:
 function Anmeldung(User, Password: String):Boolean;
Die Definition:

Delphi-Quellcode:
function Anmeldung(User, Password: String):Boolean;
begin
  if Databases.tUser.Locate('Benutzername', User, [loCaseInsensitive]) then
  begin
    if Databases.tUser.Locate('Kennwort', Password, [loCaseInsensitive]) then
    begin
      Result:= True;
    end
    else
    begin
      Result:= False;
    end;
  end
  else
  begin
    Result:= False;
  end;
end;
Und der Aufruf:

Delphi-Quellcode:
procedure TfLogin.bitbtnAnmeldenClick(Sender: TObject);
begin
  Anmeldung(eBenutzername.Text, eKennwort.Text);
end;
In der Hilfe steht ...

Diese Fehlermeldung tritt auf, wenn eine forward- oder external-Deklaration einer Prozedur bzw. Funktion oder eine Methodendeklaration in einem Klassen- bzw. Objekttyp vorhanden ist, aber die Prozedur, Funktion oder Methode nicht definiert wird.

Möglicherweise fehlt die Definition, oder ihr Name wurde falsch geschrieben.

Beachten Sie, dass eine Prozedur- oder Funktionsdeklaration im interface-Abschnitt einer Unit einer forward-Deklaration entspricht. Die zugehörige Implementierung (der Quelltext der Routine) muss dann im implementation-Abschnitt erstellt werden.

Ebenso entspricht eine Methodendeklaration in einem Klassen- oder Objekttyp einer forward-Deklaration.


Ich seh aber keinen Fehler :(

Könnt ihr mir helfen?

Danke schon mal im vorraus ;)

Euer f4k3

leddl 26. Mai 2008 07:43

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Hast du die Methode denn auch innerhalb der Form (ich gehe davon aus, dass TfLogin ein TForm ist) deklariert?

Edit:
Quatsch, nehme alles zurück, hab nicht genau genug hingeschaut... dachte es ging um die Methode aus dem letzten Quelltext, nicht um den Aufruf in der Methode :oops:

f4k3 26. Mai 2008 07:45

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Zitat:

Zitat von leddl
Hast du die Methode denn auch innerhalb der Form (ich gehe davon aus, dass TfLogin ein TForm ist) deklariert?

Delphi-Quellcode:
type
  TfLogin = class(TForm)
    lAnmeldung: TLabel;
    imgBackground: TImage;
    bitbtnAnmelden: TBitBtn;
    bitbtnAbbrechen: TBitBtn;
    pAnmeldung: TPanel;
    eBenutzername: TEdit;
    eKennwort: TEdit;
    lKennwort: TLabel;
    lBenutzername: TLabel;
    pBenutzerbild: TPanel;
    imgBenutzerbild: TImage;
    procedure FormCreate(Sender: TObject);
    procedure eBenutzernameExit(Sender: TObject);
    procedure eKennwortKeyPress(Sender: TObject; var Key: Char);
    procedure bitbtnAnmeldenClick(Sender: TObject);
    function Anmeldung(User, Password: String):Boolean;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
Ja ist innerhalb des TForm Abschnitts und ja TFLogin ist ein TForm

leddl 26. Mai 2008 07:48

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Aha, dann lag ich ja ungewollt doch fast richtig :stupid:

Dann handelt es sich also bei beiden Funktionen/Prozeduren, die du gepostet hast, um Methoden von TfLogin. Fällt dir dann ein Unterschied in der Definition auf? :stupid:
Setz mal bei der Definition von "Anmeldung" noch das "TfLogin." davor :mrgreen:

RavenIV 26. Mai 2008 07:55

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Und setz mal die Deklaration in den private-Bereich.

f4k3 26. Mai 2008 08:24

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Zitat:

Zitat von RavenIV
Und setz mal die Deklaration in den private-Bereich.

Aber nur wenn du mir erklärst warum ;)

Luckie 26. Mai 2008 08:33

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Ist es eine Methode, die von aussen aufgerufen werden kann, soll, muss? Wenn du diese Fragen mit nein beantwortest, gehört sie in den private-Abschnitt der Klasse und hat nichts im öffentlichen Abschnitt verloren.

RavenIV 26. Mai 2008 08:43

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Zitat:

Zitat von f4k3
Zitat:

Zitat von RavenIV
Und setz mal die Deklaration in den private-Bereich.

Aber nur wenn du mir erklärst warum ;)

Weil alles zwischen "FormXY = class(FormAB)" und "private" von der IDE verwaltet wird.
Hier sind die "Eventmethoden" wie OnCreate, OnClick, usw.
Eigene Deklarationen haben dort nichts verloren, bzw. werden ignoriert.

Sherlock 26. Mai 2008 08:47

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von f4k3
Zitat:

Zitat von RavenIV
Und setz mal die Deklaration in den private-Bereich.

Aber nur wenn du mir erklärst warum ;)

Weil alles zwischen "FormXY = class(FormAB)" und "private" von der IDE verwaltet wird.
Hier sind die "Eventmethoden" wie OnCreate, OnClick, usw.
Eigene Deklarationen haben dort nichts verloren, bzw. werden ignoriert.

Das halte ich für ein Gerücht. Zu meinen Delphi-Anfängen hab ich das definitiv schon gemacht und sehe, daß es bis D7 immerhin noch läuft.

Dennoch: Guter Stil ist es nicht, denn dafür gibt es die Abschnitte private/protected/public.

Sherlock

f4k3 26. Mai 2008 08:48

Re: [function] Ungenügend Forward- oder External-Deklaration
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von f4k3
Zitat:

Zitat von RavenIV
Und setz mal die Deklaration in den private-Bereich.

Aber nur wenn du mir erklärst warum ;)

Weil alles zwischen "FormXY = class(FormAB)" und "private" von der IDE verwaltet wird.
Hier sind die "Eventmethoden" wie OnCreate, OnClick, usw.
Eigene Deklarationen haben dort nichts verloren, bzw. werden ignoriert.

Zitat:

Zitat von Luckie
Ist es eine Methode, die von aussen aufgerufen werden kann, soll, muss? Wenn du diese Fragen mit nein beantwortest, gehört sie in den private-Abschnitt der Klasse und hat nichts im öffentlichen Abschnitt verloren.

Okay ;) Danke für die Erklärung ihr Beiden ;)

Funzt alles wunderbar ... und habs nun auch in den Privat-bereich verschoben ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 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