Autor Beitrag
MC_Donna
Hält's aus hier
Beiträge: 9

Win 98
Deephi 6
BeitragVerfasst: Mo 01.12.03 18:32 
Hallo,

habe verschiedene Fuctionen in einem Programm, die möchte ich alle in einer separaten Unit verschieben.

Wen die Function in der gelichen Unit wie der aufruf sich befindet funktionert es.

function Hallo:String;
begin
Result:='Hallo';
end;

Ich habe die Unit mit uses verbunden.

Wen ich die Function in einer separaten Unit eingebe, wird sie von der ausgehenden aufruf-Unit nicht gefunden.



Was mache ich falsch?

_________________
Aller Anfang ist schwer.
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Mo 01.12.03 18:39 
Du mußt im Interface-Teil der Unit den FunktionsHeader noch einmal angeben, um die Funktion zu exportieren, ansonsten ist sie nur innerhalb der Unit sichtbar.

barfuesser
MC_Donna Threadstarter
Hält's aus hier
Beiträge: 9

Win 98
Deephi 6
BeitragVerfasst: Di 02.12.03 00:56 
Hallo,


das hatte ich auch schon probiert, und bekomme fongende Fehlermeldung:

[Fehler] Unit2.pas(11): Ungenügende Forward- oder External-Deklaration: 'TForm2.Hallo'

Wo ist der Wurm versteckt?

_________________
Aller Anfang ist schwer.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.03 04:57 
"TForm2"? ist deine Funktion, die du auslagern willst eine Methode eine Form Klasse?
infomio
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110

Win xy

BeitragVerfasst: Di 02.12.03 08:22 
mmmh...

deklariere die Funktionen doch einfach im public-Abschnitt und füge dann die Unit, wo die Funktionen drauf sind in die uses-Klausel dazu.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 02.12.03 09:50 
Unit1 (die von der Form):
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMyMessage('Hello world');
end;

end.

Die Unit mit der Funktion / Prozedur:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
unit Unit2;

interface

uses
  Dialogs;

procedure ShowMyMessage(s: string);

implementation

procedure ShowMyMessage(s: string);
begin
  ShowMessage(s);
end;


end.
MC_Donna Threadstarter
Hält's aus hier
Beiträge: 9

Win 98
Deephi 6
BeitragVerfasst: Di 02.12.03 11:07 
Halo,

Vielen Dank für die Blitzschnelle antwort.

Es hat geklappt.

Ich hatte anscheinend zuviel Unnütziges Zeug in der Unit 2.

Dieses Forum ist Super.

Nochmals vielen Dank.

_________________
Aller Anfang ist schwer.