Grahame,
Thanks for the help. Using your code as a start I was able to get
things talking to each other. Would it be OK for me to expand the demo
and submit it to the Indy Demo Team?
Thanks,
Jimmie Shahan
> Jimmie Shahan wrote:
>
>> Does anyone have a demo project using the IdHL7 Componet supplied in
>> Indy 9 that they would be willing to share? Please send any sample
>> code to ✉jshahan.com.
>
>
> example:
>
> object hl7server: TIdHL7
> Port = 2000
> IPRestriction = '0.0.0.0'
> IPMask = '0.0.0.0'
> CommunicationMode = cmSynchronous
> OnConnect = hl7serverConnect
> OnDisconnect = hl7serverDisconnect
> Left = 232
> Top = 24
> end
> object hl7client: TIdHL7
> Address = 'localhost'
> Port = 2000
> IPRestriction = '0.0.0.0'
> IPMask = '0.0.0.0'
> CommunicationMode = cmSynchronous
> IsListener = False
> OnConnect = hl7clientConnect
> OnDisconnect = hl7clientDisconnect
> Left = 270
> Top = 26
> end
>
>
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls, IdBaseComponent, IdHL7;
>
> type
> TForm1 = class(TForm)
> hl7server: TIdHL7;
> hl7client: TIdHL7;
> Button1: TButton;
> Button2: TButton;
> Label1: TLabel;
> Label2: TLabel;
> Label3: TLabel;
> Label4: TLabel;
> Label5: TLabel;
> Label6: TLabel;
> Memo1: TMemo;
> Memo2: TMemo;
> Memo3: TMemo;
> Memo4: TMemo;
> Button3: TButton;
> procedure Button1Click(Sender: TObject);
> procedure hl7serverConnect(Sender: TObject);
> procedure hl7serverDisconnect(Sender: TObject);
> procedure Button2Click(Sender: TObject);
> procedure hl7clientConnect(Sender: TObject);
> procedure hl7clientDisconnect(Sender: TObject);
> procedure FormCreate(Sender: TObject);
> procedure Button3Click(Sender: TObject);
> private
> { Private declarations }
> FSent : string;
> FReply : string;
> procedure incoming(ASender: TObject; AMsg: String; var VHandled:
> Boolean; var VReply: String);
>
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> if hl7server.Status = isStopped then
> begin
> hl7server.start;
> Button1.caption := 'Stop Server';
> end
> else
> begin
> hl7server.stop;
> Button1.caption := 'Start Server';
> end;
> end;
>
> procedure TForm1.hl7serverConnect(Sender: TObject);
> begin
> label1.caption := 'Connected';
> end;
>
> procedure TForm1.hl7serverDisconnect(Sender: TObject);
> begin
> label1.caption := 'Disconnected';
> end;
>
> procedure TForm1.Button2Click(Sender: TObject);
> begin
> if hl7client.Status = isStopped then
> begin
> hl7client.start;
> Button1.caption := 'Stop Client';
> end
> else
> begin
> hl7client.stop;
> Button1.caption := 'Start Client';
> end;
> end;
>
> procedure TForm1.hl7clientConnect(Sender: TObject);
> begin
> label2.caption := 'Connected';
> end;
>
> procedure TForm1.hl7clientDisconnect(Sender: TObject);
> begin
> label2.caption := 'Disconnected';
> end;
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> hl7server.OnReceiveMessage := incoming;
> end;
>
> procedure TForm1.incoming(ASender: TObject; AMsg: String; var VHandled:
> Boolean; var VReply: String);
> begin
> // can't use the memo's directly - in the wrong thread
> FSent := AMsg;
> VHandled := true;
> VReply := FReply;
> end;
>
> procedure TForm1.Button3Click(Sender: TObject);
> var
> s : string;
> begin
> FReply := Memo2.text;
> FSent := '';
> case hl7client.SynchronousSend(memo1.text, s) of
> srError : raise exception.create('internal error: '+s);
> srNoConnection : raise exception.create('not connected');
> srTimeout : raise exception.create('no response from server');
> srOK : begin
> memo3.text := FSent;
> memo4.text := s;
> end;
> srSent : raise exception.create('can''t happen');
> end;
>
> end;
>