Я использую сиэтл в окнах 10 бит 64 бит.Как получить возвращаемое значение IStaticPortMappingCollection.Add вернуть или нет?
Я пытаюсь перенаправить порт с помощью upnp и получить возвращаемое значение. Переадресация портов работает хорошо, но следующая строка «не может преобразовать вариант типа (отправки) в тип (целое)».
_hResult := _Ports.add(_PortNumber, 'TCP', _PortNumber, Edit1.Text, True, _PortName);
Тип возвращаемого значения можно найти на следующей странице msdn.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366148(v=vs.85).aspx
Весь код
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Win.ComObj, Vcl.StdCtrls;
procedure TForm1.FormClick(Sender: TObject);
var
_NAT: Variant;
_Ports: Variant;
_PortNumber: Integer;
_PortName: string;
_hResult: HRESULT;
begin
_NAT := CreateOleObject('hnetcfg.natupnp');
_Ports := _NAT.staticportmappingcollection;
_PortNumber := 8000;
_PortName := 'test';
if VarIsClear(_Ports) then // $00000000
begin
Caption := 'error';
end
else
begin
_hResult := _Ports.add(_PortNumber, 'TCP', _PortNumber, Edit1.Text, True, _PortName);
if _hResult = S_OK then
begin
Caption := 'succeeded';
end;
end;
end;
Ваше соглашение об именовании переменных нестандартное и очень рельефное. –