-1

任意の pacs サーバー Delphi からメッセージを取得し、このメッセージを ASCII 形式で memo1 に表示するにはどうすればよいですか

このインディコンポーネントを使用することは可能ですか。

これは、 http://sourceforge.net/projects/indy10cliesservr/のサンプル コードです。

任意のモダリティ エミュレータまたは任意の PACS サーバーから C-ECHO コマンドを送信します。正常に接続されましたが、memo1 に受信メッセージが表示されません。ただし、Delphi で Chamelon HL7 コンポーネントがメッセージに表示される

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

私は質問をよく理解していません...しかし、私はすぐに問題を見つけました:

すべてのインターネット サーバーは検証入力である必要があります。そうしないと、セキュリティ上のリスクが生じます。

この場合、有効な整数が送信されることを期待しています。有効な整数を取得できない場合は、例外が発生します。これは望ましい動作かもしれませんが、私はそれを疑っています。

特にこの行: i:= strToInt(Line);

代わりに、試してみてください..

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