Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Definieren von Funktionen unter Type (https://www.delphipraxis.net/24972-definieren-von-funktionen-unter-type.html)

endeffects 29. Jun 2004 10:04


Definieren von Funktionen unter Type
 
Hallo,

ich habe vorhin folgende Funktion im Forum gefunden und
setze diese nun in einem kleinen Programm ein:

Code:
function HexStrToStr(const HexStr:String) : String;
var i : Integer;
begin
  Result := '';
  for i := 1 to Length(HexStr) div 2 do
    Result := Result + Chr(StrToInt('$'+Copy(HexStr,i*2-1,2)));
end;
Da ich nun noch relativ neu im Umgang mit Delphi bin
hat es mich gewundert das diese Funktion auch ohne
die Deklaration unter Type funktioniert.

Was mich allerdings noch mehr wundert ist das wenn
ich versuche HexStrToStr(const HexStr:String) : String;
unter Type aufzunehmen dann bekomm ich folgenden Fehler:

Zitat:

Ungenügende Forward- oder External-Deklaration: 'TForm1.HexStrToStr'
Ich dachte eigentlich es ist Pflicht alle funktionen dort anzugeben? :gruebel:

nieurig 29. Jun 2004 10:14

Re: Definieren von Funktionen unter Type
 
Du hast die Funktion als Methode der Klasse TForm1 deklariert.
etwa so:

Delphi-Quellcode:
type
  TForm1 = class(TForm)

  private
    { Private declarations }
    HexStrToStr (const HexStr:String) : String;
  public
  end;
Die Fehlermeldung die Du bekommst besagt, dass DIESE Funktion nicht gefunden werden kann.

Es müßte heißen:

Delphi-Quellcode:
  function TForm1.HexStrToStr(const HexStr:String) : String;
oder die Funktion müßte außerhalb der Klassendefinietion deklariert werden.

Ich hoffe es hilft.
Niels

Sharky 29. Jun 2004 10:15

Re: Definieren von Funktionen unter Type
 
Zitat:

Zitat von endeffects
...Ich dachte eigentlich es ist Pflicht alle funktionen dort anzugeben? :gruebel:

Nö, ;-)

Wenn Du es "dort" angibst ist deine Funktion eine Methode des Forumlares und kann dann auch auf alle Eigenschaften von diesem Zugreifen. Da dies bei deiner Funktion nicht notwendig ist brauchst/solltest Du sie auch dort nicht deklarieren.

endeffects 29. Jun 2004 10:20

Re: Definieren von Funktionen unter Type
 
Aaaalso wenn ich das nun richtig verstanden habe brauch ich die
Funktion nirgends weiter angeben, ja?

Sharky 29. Jun 2004 10:21

Re: Definieren von Funktionen unter Type
 
Zitat:

Zitat von endeffects
Aaaalso wenn ich das nun richtig verstanden habe brauch ich die
Funktion nirgends weiter angeben, ja?

Wenn Du sie nicht ausserhalb deiner Unit (sprich in anderen) verwenden möchtest. Nein. Dann brauchst Du das nicht.

Steve 29. Jun 2004 10:22

Re: Definieren von Funktionen unter Type
 
Wenn Du sie nur in dieser Unit brauchst, ja. Ansonsten brauchst Du den Metoden-Kopf im interface-Teil

Stephan

endeffects 29. Jun 2004 10:24

Re: Definieren von Funktionen unter Type
 
Ok =),

danke Euch für die schnelle Hilfe :dance:

AlphaBug 29. Jun 2004 10:35

Re: Definieren von Funktionen unter Type
 
Hi :hi: ,

Da die Units (grob gesagt) in einen Interface-Abschnitt und einen Implementation-Abschnitt unterteilt sind, gibt es mehrere Möglichkeiten Methoden zu deklarieren.

Methoden, die im Interface-Abschnitt deklariert wurden, gehören entweder einer Klasse an oder sind öffentlich verfügbar.
Gehört die Methode zu einer Klasse, kann man sie nur über ein von der Klasse erstelltes Objekt aufrufen.

Methoden im Implementation-Abschnitt können auch nur dort verwendet weden.

Und diese "Funktion1" kann bspw. nur in "Procedure1" aufgerufen werden. -->
Delphi-Quellcode:
procedure Procedure1;
  function Funktion1(Value: Boolean): Boolean;
  begin
    Result := not Value;
  end;
var B: Boolean;
begin
  B := Funktion1(True);
  ...
end;


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