2011-03-09 26 views
-1

如何從任何PACS服務器德爾福的消息,並顯示在memo1如何德爾福發送和接收命令C-ECHO,C-GET DICOM通信PACS或方式

此消息ASCII格式是有可能使用這個indy組件可以嗎?

這是從http://sourceforge.net/projects/indy10clieservr/

發送C-echo命令的示例代碼從任何模態仿真器或任何PACS服務器。連接好吧,但不能在memo1中看到傳入的消息。但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; 
+0

這是很難理解你需要,因爲拼寫和語法錯誤的東西。您可以嘗試使用[Google翻譯](http://translate.google.com/)從您的母語獲取一些英文文本。您可能還希望在消息中包含一些源代碼:存在一些運行時錯誤(EConversion錯誤),也許我們可以從代碼中找出某些東西。 – 2011-03-09 14:21:43

回答

0

我不太明白的問題......但我很快發現一個問題:

任何互聯網服務器需要驗證輸入。不這樣做是安全風險。

在這種情況下,您希望發送一個有效的整數。如果你沒有得到一個有效的整數,你會引發一個異常。這可能是期望的行爲,但我懷疑它。

明確這一行:i:= strToInt(Line);

相反,你可以嘗試..

if TryStrToInt(line,i) then 
    // Handle valid integer sent 
else 
    // Handle Invalid integer sent