home *** CD-ROM | disk | FTP | other *** search
- program CXTest;
- uses exec;
- {$incl "commodities.lib"}
-
- (* Wir bauen uns ein Commodity
-
- man nehme: die "commodities.library"
- und EXCHANGE
- *)
-
- var nb : NewBroker; (* damit legen wir alle neuen Broker an *)
- brok,F_diskin,S_diskin,
- F_diskrem,S_diskrem:p_CxObj; (* unsere CX-Objekte *)
- my_MSG:p_Message; (* für die Messages von der commoditiers.library *)
- MPort:p_MsgPort; (* und noch ein Port dafür *)
- c1,c2:string[20]; (* 2 Strings für die Ereignisse *)
- err:long; (* um Rückmeldungen irgendwohin zu tun *)
-
- procedure HandleMsgs;
- (* HandleMsgs macht nichts anderes, als auf eine Message der commoditiers.library
- zu warten. Die wird dann ausgewertet und entsprechend gehandelt. *)
-
- var id,typ:long;
- ende:boolean;
-
- begin
- repeat
- ende:=false;
- my_MSG:=Wait_Port(MPort);
- my_MSG:=Get_Msg(MPort);
- id:=CxMsgID(ptr(my_MSG));
- typ:=CxMsgType(ptr(my_MSG));
- Reply_MSG(my_MSG);
- case typ of
- CXM_IEVENT: begin
- (* das ist ein Ereignis, das wir eingestellt haben *)
- case id of
- 1: writeln("1: ",c1)
- 2: writeln("2: ",c2);
- else
- end;
- end
- CXM_COMMAND: begin
- (* dashier kommt von EXCHANGE *)
- case id of
- CXCMD_DISABLE: writeln("Disabled!")
- CXCMD_ENABLE: writeln("Enabled!")
- CXCMD_KILL: begin
- writeln("KILL!");
- ende:=true;
- end
- CXCMD_UNIQUE: writeln("UNIQUE!")
- CXCMD_APPEAR: writeln("Appear!")
- CXCMD_DISAPPEAR: writeln("Disappear!");
- else
- end;
- end
- else
- end;
- until ende;
- end;
- begin
- OpenLib(CxBase,"commodities.library",37);
- c1:="rawkey b"; (* die Ereignisse für uns: die Taste "b" oder *)
- c2:="diskinserted"; (* das Einlegen einer Diskette - reine Testzwecke... *)
- MPort:=CreateMsgPort; (* ein MessagePort für die Messages halt *)
- if MPort<>NIL then
- begin
- nb:=NewBroker(NB_Version,"CX-Test-Broker","CX-Test","Ein Test!",NBU_Unique or NBU_Notify,COF_SHOW_HIDE,0,MPort,0);
- (* so, das ist unser Programm - diese Daten sind u.a. bei EXCHANGE zu sehen *)
- brok:=CxBroker(^nb,nil);
- if brok<>NIL then
- begin
- F_diskin:=CreateCxObj(CX_Filter,long(^c1),0);
- (* ein Filter, der die rawkey b herausfiltert *)
- if F_diskin<>NIL then
- begin
- AttachCxObj(brok,F_diskin);
- S_diskin:=CreateCxObj(CX_Send,long(MPort),1);
- (* und ein Sender, der uns dann das auch mitteilt
- als letztes wird hier der ID 1 angegeben, damit wir die Ereignisse
- unterscheiden können *)
- if S_diskin<>NIL then
- begin
- AttachCxObj(F_diskin,S_diskin);
- F_diskrem:=CreateCxObj(CX_Filter,long(^c2),0);
- (* der 2. Filter *)
- if F_diskrem<>NIL then
- begin
- AttachCxObj(brok,F_diskrem);
- S_diskrem:=CreateCxObj(CX_Send,long(MPort),2);
- (* und sein Sender *)
- if S_diskrem<>NIL then
- begin
- AttachCxObj(F_diskrem,S_diskrem);
- err:=long(ActivateCxObj(brok,1));
- (* so, das ganze jetzt ankurbeln und es (sollte) laufen... *)
- HandleMsgs;
- end;
- end;
- end;
- end;
- DeleteCxObjAll(brok); (* das entfernt einfach alle CxObjekte *)
- end;
- DeleteMsgPort(MPort);
- end
- end.
-
-