Autor Beitrag
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 08.09.13 18:57 
N'Abend,
habe mir soebend die Pipe.pas runtergeladen (www.delphipraxis.net...og-uerrorlog_149.pas), aber leider keine Demo gefunden. Das Ganze läuft bei mir in einer Konsolen-Andwendung. Hier mein Code:
ausblenden volle Höhe 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:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
program WaitProjector;

{$APPTYPE CONSOLE}

uses
  Windows, 
  Messages,
  SysUtils,
  Classes,
  Pipes in '..\WaitServer\Pipes.pas';

type
  TPipeEventHandler =  class(TObject)
  public
   procedure OnPipeConnect(Sender: TObject; Pipe: HPIPE);
   procedure OnPipeMessage(Sender: TObject; Pipe: HPIPE; Stream: TStream);
   procedure OnPipeSent(Sender: TObject; Pipe: HPIPE; Size: DWORD);
  end;

var Msg: TMsg;
    PSHandler: TPipeServer;
    PEHandler: TPipeEventHandler;
    Test: integer = 0;

procedure TPipeEventHandler.OnPipeConnect(Sender: TObject; Pipe: HPIPE);
begin
 Test:= 1;
end;

procedure TPipeEventHandler.OnPipeMessage(Sender: TObject; Pipe: HPIPE; Stream: TStream);
begin
 Test:= 2;
end;

procedure TPipeEventHandler.OnPipeSent(Sender: TObject; Pipe: HPIPE; Size: DWORD);
begin
 Test:= 3;
end;

begin
 PeekMessage(Msg, 0, WM_USER, WM_USER, PM_NOREMOVE);

 PSHandler:= TPipeServer.CreateUnowned;
 PEHandler:= TPipeEventHandler.Create;

 PSHandler.PipeName:='WaitServer';
 PSHandler.OnPipeConnect:= PSHandler.OnPipeConnect;
 PSHandler.OnPipeMessage:=PSHandler.OnPipeMessage;
 PSHandler.OnPipeSent:= PSHandler.OnPipeSent;
 PSHandler.Active:= true;

 while true do
 begin
  {...}
  while PeekMessage(Msg, 000, PM_REMOVE) do DispatchMessage(Msg);
  writeLn(inttostr(Test)); // Mit PSHandler.ClientCount kann man sehen, dass 1 Verbindung besteht
 end;
end.

Der Client (von hier abgeschrieben stackoverflow.com/qu...i-program-to-another) schickt die Nachricht und der Server verbindet sich auch mit dem Client, aber keines der Events wird ausgelöst. Hat jemand eine Idee wie es funktionieren könnte?

Viele Grüße
Littleben
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 09.09.13 13:49 
user profile iconLittleBen hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
 PSHandler.OnPipeConnect:= PSHandler.OnPipeConnect;
 PSHandler.OnPipeMessage:=PSHandler.OnPipeMessage;
 PSHandler.OnPipeSent:= PSHandler.OnPipeSent;

[...] aber keines der Events wird ausgelöst.


Das wundert mich nicht. :mrgreen: Du musst auch die Handler deiner eigenen Klasse zuweisen.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mo 09.09.13 14:58 
:autsch: :autsch: :autsch: :autsch: :autsch: :autsch: :autsch: :autsch: :autsch:
Ich sag dazu einfach mal nichts...