如何从任何pacs服务器Delphi获取消息并在memo1中显示此消息ASCII格式
是否可以使用这个indy组件。
这是来自http://sourceforge.net/projects/indy10clieservr/
的示例代码从任何模态仿真器或任何PACS服务器发送C-ECHO命令。已连接好但无法在memo1中看到传入的消息。但Chamelon HL7组件在Delphi上显示消息
procedure TServerMainForm.IdTCPServerConnect(AContext: TIdContext);
begin
memo1.Lines.Add('Connection from ..PeerIP/IP' + AContext.Binding.PeerIP + ' // ' + AContext.Binding.IP + ' @ ' + dateToStr(now) + '->' + TimeToStr(now) );
AContext.Connection.IOHandler.WriteLn('C-ECHO-RSP');
end;
procedure TServerMainForm.IdTCPServerExecute(AContext: TIdContext);
var CommBlock, NewCommBlock : TINDYCMD;
buf : TIdBytes;
line : String;
i : integer;
begin
memo1.Lines.Add('server execute start' );
with AContext.Connection do
begin
IOHandler.Readln(line);
end;
try
////////////// This line = 0 and cant see anything memo1. ////////////
if length(line) > 0 then
begin
memo1.Lines.Add(line );
i:= strToInt(Line);
end
else
i:=-1;
except
end;
case i of
0: begin
TCPServerExecuteExchangeStrings(AContext);
end;
1 : begin
TCPServerExecuteExchangeRecords(AContext);
end;
2: begin
end;
else
//
end;
LEDShape.brush.Color := clgreen;
memo1.Lines.Add('server execute done' );
end;
答案 0 :(得分:0)
我不太明白这个问题......但我很快就发现了一个问题:
任何Internet服务器都需要验证输入。不这样做会带来安全风险。
在这种情况下,您希望发送一个有效的整数。如果没有得到有效的整数,则会引发异常。这可能是理想的行为,但我对此表示怀疑。
特别是这一行:i:= strToInt(Line);
相反,你可以尝试..
if TryStrToInt(line,i) then
// Handle valid integer sent
else
// Handle Invalid integer sent