Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion in anderer Unit (https://www.delphipraxis.net/117997-funktion-anderer-unit.html)

The Lord 29. Jul 2008 21:41


Funktion in anderer Unit
 
Hi,

ich habe eine längere Delphi-Pause eingelegt. Bin wieder mit der Turbo Explorer Version eingestiegen. Ich habe eine Funktion in Unit1 und möchte diese gerne in Unit2 benutzen.

Dafür habe ich bei Unit2 in der USES Klausel die Unit1 eingebunden.

[Pascal Fehler] Unit1.pas(15): E2065 Ungenügende Forward- oder External-Deklaration: 'TForm4.PHPVar'

Was habe ich in Unit1 falsch gemacht?

Coder1990 29. Jul 2008 23:49

Re: Funktion in anderer Unit
 
Hast du in Unit1 die Procedure auch in Implementation Deklariert (also mit begin end und befehlszeilen)?
Steckt die Procedure in Unit1 in einer Klasse?
Ist die Procedure in Unit1 im "var" Bereich deklariert (falls du keine Klasse in der Unit hast)?

MfG

mkinzler 30. Jul 2008 05:37

Re: Funktion in anderer Unit
 
Ich vermute mal du hast die Methode als freie Prozedur implementiert. Schreibe im Implementierungs-Abschnitt TForm4. davor

The Lord 30. Jul 2008 14:23

Re: Funktion in anderer Unit
 
Zitat:

Zitat von Coder1990
Hast du in Unit1 die Procedure auch in Implementation Deklariert (also mit begin end und befehlszeilen)?
Steckt die Procedure in Unit1 in einer Klasse?
Ist die Procedure in Unit1 im "var" Bereich deklariert (falls du keine Klasse in der Unit hast)?

MfG


Delphi-Quellcode:

...

implementation

{$R *.dfm}


procedure PHPVar(RichEdit: TRichEdit);
var
  isVar: Boolean;
  i: Integer;
  s: String;
begin
  for i := 0 to Length(RichEdit.Text) do
  begin

...
Aufruf:

Delphi-Quellcode:
procedure TForm2.Button5Click(Sender: TObject);
begin
  TForm4.PHPVar(RichEdit1);
end;

taaktaak 30. Jul 2008 14:28

Re: Funktion in anderer Unit
 
Ist
Zitat:

procedure PHPVar(RichEdit: TRichEdit);
im Interface-Abschnitt eingetragen?

nahpets 30. Jul 2008 14:30

Re: Funktion in anderer Unit
 
so sollte es gehen
Delphi-Quellcode:
...
procedure PHPVar(RichEdit: TRichEdit);

implementation

{$R *.dfm} 


procedure TForm4.PHPVar(RichEdit: TRichEdit);
var
  isVar: Boolean;
  i: Integer;
  s: String;
begin
  for i := 0 to Length(RichEdit.Text) do
  begin
...

angos 30. Jul 2008 14:31

Re: Funktion in anderer Unit
 
Zitat:

Zitat von mkinzler
Ich vermute mal du hast die Methode als freie Prozedur implementiert. Schreibe im Implementierungs-Abschnitt TForm4. davor


mkinzler hat recht.

im interface-teil sollte das so stehe:
Delphi-Quellcode:
type
  TForm4 = class(TForm)
  public
    procedure PHPVar(RichEdit: TRichEdit);
  end;
...

im implementation-Teil sollte das so stehen:
Delphi-Quellcode:
procedure TForm4.PHPVar(RichEdit: TRichEdit);
Edit: @nahpets: nicht ganz. Bei dir ist die Procedur nicht innerhalb der Klasse TForm4 deklariert ;)

taaktaak 30. Jul 2008 14:34

Re: Funktion in anderer Unit
 
Na, eigentlich nicht...
Wenn das im Implementation-Abschnitt 'ne Methode sein soll, dann muss diese im Interface als Klassenmethode erscheinen - oder?

//edit : jawoll!

The Lord 30. Jul 2008 14:35

Re: Funktion in anderer Unit
 
Zitat:

Zitat von taaktaak
Ist
Zitat:

procedure PHPVar(RichEdit: TRichEdit);
im Interface-Abschnitt eingetragen?

Delphi-Quellcode:
unit Unit1;

interface

procedure PHPVar(RichEdit: TRichEdit);

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, idHTTP, StdCtrls, ComCtrls, Menus, ShellApi;

...
Etwa so? Das gibt aber nen Error :(

taaktaak 30. Jul 2008 14:41

Re: Funktion in anderer Unit
 
Hmm, du musst dich entscheiden:
Entweder soll es 'ne "normale" Prozedur sein oder eine Methode - im Augenblick vermischt du das, deswegen der Fehler.

//außerdem: Zuerst das Uses xxxx, dann deine Deklaration


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.
Seite 1 von 2  1 2      

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