Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Prozeduren aus fremden units einbinden
Phraser - Sa 10.05.03 20:29
Titel: Prozeduren aus fremden units einbinden
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. - 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.
Phraser - 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):
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 - 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:
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:
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; |
Phraser - Mo 12.05.03 20:36
Vielen Dank an euch, es klappt jetzt! :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!