-1

如何从任何 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;
4

1 回答 1

0

我不太明白这个问题......但我很快就发现了一个问题:

任何 Internet 服务器都需要验证输入。不这样做会带来安全风险。

在这种情况下,您期望收到一个有效的整数。如果您没有得到有效的整数,则会引发异常。这可能是理想的行为,但我对此表示怀疑。

特别是这一行: i:= strToInt(Line);

相反,您可以尝试..

if TryStrToInt(line,i) then
  // Handle valid integer sent
else
  // Handle Invalid integer sent
于 2011-03-10T19:27:07.607 回答