1

Webサービスで使用されている変数を解放するにはどうすればよいですか。

私はこのフォームを使用しています:

 HttpPrincipal.WSDLLocation: = FrmPrincipal.edtWS.Text;
 HttpPrincipal.Service: = 'CADServicesService'; 
 HttpPrincipal.Port := 'CADServices';     
 Trinity: = HttpPrincipal as CADServices;

フォームを閉じるときにエラーが表示され、この部分を宣言すると次のことがわかりました。

Trinity: = HttpPrincipal as CADServices;

記憶に残っていると思います。

エラーは次のとおりです。

「無効なポインタ」このエラーは、フォームを閉じるときに発生します。OnCloseフォームまたはOnDestroyフォームにイベントはありません。

説明: Trinity : CADServices, HttpPrincipal is a THTTPRIO, CADServices is my Unit containing all procedures / functions from WebService.

4

1 に答える 1

3

designtime コンポーネントを使用する代わりに、実行時に HTTPRIO を作成してみてください。

function GetCadServices(Addr : String): CadServices;
const
  defSvc  = 'CADServicesService';
  defPrt  = 'CADServices';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  RIO := THTTPRIO.Create(nil)  
  try
    Result := (RIO as CadServices);
    RIO.WSDLLocation := Addr;
    RIO.Service := defSvc;
    RIO.Port := defPrt;
  finally
    if (Result = nil) then
      RIO.Free;
  end;
end;

使用法:

Trinity := GetCadServices(FrmPrincipal.edtWS.Text);

WSDL インポーターで WSDL をインポートした場合、このコードは自動的に生成されます (CadServices1 ユニットを参照してください)。

于 2012-12-06T14:27:55.023 に答える