Autor Beitrag
Phraser
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 10.05.03 20:29 
Hallo!

Eine sicherlich einfache (und zugegebenermaßen dumme Frage), aber ich bin Neuling:

Wie kann ich eine spezielle Prozedur, die ich in einer Unit selbst geschrieben habe, in einer anderen (zweiten) Unit aufrufen, ohne sie dort noch einmal neu zu schreiben?

Ich glaube, es hat was mit uses zu tun, aber keine Ahnung wie ich es realisieren soll :?

Danke!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 10.05.03 20:37 
Wenn Du die Prozedur / Funktion in Unit1 geschrieben hast, so schreibst Du Unit1 einfach in die LIste der Untis in der USES-Klausel und Du kannst die Prozedur / Funktion benutzen. Du musst sie allerdings im Interface-Teil von Unit1 deklariert haben, damit Du sie auf diese Weise in einer anderen Unit verwenden kannst.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Phraser Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 11.05.03 13:06 
Danke für die Antwort!

Ich habs mal so versucht, wie es beschrieben wurde, aber es funktioniert noch nicht. Hier der Auszug aus der unit 1 (mit einem sehr einfachen Beispiel):

ausblenden volle Höhe 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

procedure zahl;

uses
  Windows, Messages, SysUtils, 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

uses Unit2;


{$R *.DFM}

procedure zahl;
begin
form2.label1.caption := inttostr(strtoint(form2.label1.caption) + 1);
end;


-> Deklaration erwartet, aber uses gefunden

:?: :?: :?:
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: So 11.05.03 14:48 
Es gibt im Interface-Teil eine Reihenfolge die eingehalten werden muß. Zuerst die Auflistung der Units und erst dann weitere Deklarationen. Bei dir ist somit die Reihenfolge falsch:

ausblenden volle Höhe 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:
unit Unit1; 

interface 

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

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

  procedure zahl; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

var 
  Form1: TForm1; 

implementation 

uses Unit2; 


{$R *.DFM} 

procedure zahl; 
begin 
  form2.label1.caption := inttostr(strtoint(form2.label1.caption) + 1); 
end;


In diesem Fall kannst du dir das Leben ein wenig leichter machen. Der Vorteil von der nächsten Methode ist, daß du es in das Formularobjekt einbindes:

ausblenden volle Höhe 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:
unit Unit1; 

interface 

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

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

var 
  Form1: TForm1; 

implementation 

uses Unit2; 


{$R *.DFM} 

procedure Form1.zahl; 
begin 
  label1.caption := inttostr(strtoint(label1.caption) + 1); 
end;

_________________
Popov
Phraser Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Mo 12.05.03 20:36 
Vielen Dank an euch, es klappt jetzt! :)