Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - OnProcedure selber schreiben


>M@steR< - So 11.10.09 16:25
Titel: OnProcedure selber schreiben
Gelöscht


jaenicke - So 11.10.09 16:35


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
type
  TMyEvent = procedure(Sender: TObject; Param: stringof object;

  TBla = class
  private
    FMyEvent: TMyEvent;
  public
    property OnMyEvent: TMyEvent read FMyEvent write FMyEvent;
  end;

  TBle = class
  private
    FBla: TBla;
    procedure BlaMyEvent(Sender: TObject; Param: string);
  end;

...

procedure TBle. ...
begin
  FBla.OnMyEvent := BlaMyEvent;
end;
Als Variable in einer Unit geht es analog, auch wenn es sich nicht gerade nach sauberer Programmierung anhört.


>M@steR< - So 11.10.09 18:44

Gelöscht


dummzeuch - So 11.10.09 20:46

user profile iconjaenicke hat folgendes geschrieben:
Als Variable in einer Unit geht es analog, auch wenn es sich nicht gerade nach sauberer Programmierung anhört.


nur der Vollstaendigkeit halber:


Delphi-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:
unit MyUnit1;

interface

type
  TMyProc = procedure(_Param1, _Param2: integer; var _Param3: string);

var
  MyProc: TMyProc = nil;

implementation

procedure doMyProc(_Param1, _Param2: integer; var _Param3: string); inline;
begin
  if not Assigned(MyProc) then
    raise exception.Create('MyProc nicht zugewiesen');
  MyProc(_Param1, _Param2, _Param3);
end;

procedure WasAuchImmer;
var
  eins, zwei: ingeger;
  drei: integer;
begin
  eins := 1;
  zwei := 2;
  drei := 'drei';
  doMyProc(eins, zwei, drei);
end;

end;


Wieso das keine saubere Programmierung sein soll, verstehe ich nicht. Es ist halt nicht objektorientiert, das ist aber auch schon alles.

twm