Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Die Unit, das unberechenbare Wesen (https://www.delphipraxis.net/54314-die-unit-das-unberechenbare-wesen.html)

aiguille 2. Okt 2005 01:01

Re: Die Unit, das unberechenbare Wesen
 
:gruebel: weia. Peinlich.

aiguille 2. Okt 2005 01:35

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:
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.
denn in unit2 steht:

Delphi-Quellcode:
unit unit2;

interface

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



implementation

uses unit1;

procedure XY;
begin
Meldung;
end;

end.

malo 2. Okt 2005 01:42

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:
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.
2. Möglichkeit ist, dass du es als Klassenmethode deklarierst (z.B. in Form1). dann sieht es so aus:

Delphi-Quellcode:
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.
Der Aufruf in diesem beispiel sähe so aus:

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 ;)

aiguille 2. Okt 2005 10:01

Re: Die Unit, das unberechenbare Wesen
 
Ahhhhh...!herzlichen Dank :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Seite 2 von 2     12   

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