![]() |
Re: Die Unit, das unberechenbare Wesen
:gruebel: weia. Peinlich.
|
Re: Die Unit, das unberechenbare Wesen
Ich bitte um Nachsicht, aber
wenn ich das Problem so formulier, dann krieg ich >undefinierter Bezeichner 'Meldung'<
Delphi-Quellcode:
denn in unit2 steht:
unit unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,unit2; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure Meldung; begin ShowMessage('Meldung'); end; procedure TForm1.Button1Click(Sender: TObject); begin Meldung; end; end.
Delphi-Quellcode:
unit unit2;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; implementation uses unit1; procedure XY; begin Meldung; end; end. |
Re: Die Unit, das unberechenbare Wesen
Es gibt verschiedene Wege, das zu lösen.
Erstmal zur Erklärung: Du hast eine Prozedur im Implementation-Abschnitt geschrieben. Du kannst nun in allen Funktionen, die unter der entspr. stehen, einen Aufruf dieser machen. Allerdings gilt das nur für diese Unit. Um die Prozedur/Funktion für mehrere Units öffentlich zu machen, gibt es imho 2 Möglichkeiten: 1. Du deklarierst die Prozedur im Interface-Abschnitt. Dürfte in der Unit1 so aussehen:
Delphi-Quellcode:
2. Möglichkeit ist, dass du es als Klassenmethode deklarierst (z.B. in Form1). dann sieht es so aus:
unit unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,unit2; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; (*******************************************) procedure Meldung; //diese Zeile hier (*******************************************) var Form1: TForm1; implementation {$R *.DFM} procedure Meldung; begin ShowMessage('Meldung'); end; procedure TForm1.Button1Click(Sender: TObject); begin Meldung; end; end.
Delphi-Quellcode:
Der Aufruf in diesem beispiel sähe so aus:
unit unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,unit2; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure meldung; // Und hier wichtig. end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Meldung; // hier ganz wichtig begin ShowMessage('Meldung'); end; procedure TForm1.Button1Click(Sender: TObject); begin Meldung; end; end.
Delphi-Quellcode:
procedure blubb;
begin Form1.Meldung; end; Es gibt auch andere Möglichkeiten, z.B. mit Interfaces, mit verschiedenen um-sich-schmeißenden Pointern, aber das wären wohl die geschicktesten Methoden ;) |
Re: Die Unit, das unberechenbare Wesen
Ahhhhh...!herzlichen Dank :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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