Einzelnen Beitrag anzeigen

Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#13

Re: Die Unit, das unberechenbare Wesen

  Alt 2. Okt 2005, 01:42
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
  Mit Zitat antworten Zitat