Q&A

  • EmbeddedWB 을 델파이7에서 하는데 에러발생..Invalid variant type
델 5에서 잘되던... EmbeddedWB  를 델7용을 구해서
아래함수를 실행하니 에러가 납니다...
(델7용은 여기 자료실에서 구한것...)

문제가 된 함수는 Navigate2 입니다..
아래 쏘스를 첨부합니다...어떻게 해결해야 할까요???...

Navigate2 함수는 찾아보니  SHDocVw 에..
  procedure Navigate2(var URL: OleVariant); overload;
    procedure Navigate2(var URL: OleVariant; var Flags: OleVariant); overload;
    procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var TargetFrameName: OleVariant); overload;
    procedure Navigate2(var URL: OleVariant; var Flags: OleVariant;
                        var TargetFrameName: OleVariant; var PostData: OleVariant); overload;
    procedure Navigate2(var URL: OleVariant; var Flags: OleVariant;
                        var TargetFrameName: OleVariant; var PostData: OleVariant;
                        var Headers: OleVariant); overload;

이렇게 있던데...  아래 함수의 인자를 보면 5개로 위에 맨아래의 함수가 적용되서
타입은 다 맞는것이 아닌지요????...
그런데 왜 타입에러가 나는지?...
델파이5에서는 아무 에러가 없던 것입니다..
델파이 7에서 컴파일과 실행은 되는데 함수를 호출하면 타입에러(Invalid variant type ) 한번뜨고..
정상실행은 합니다.

procedure TForm1.MyNavigate(stURL, stPostData: String; var wbWebBrowser: TEmbeddedWB);
var
vWebAddr, vPostData, vFlags, vFrame, vHeaders: OleVariant;
iLoop: Integer;
begin
{Are we posting data to this Url?}
if Length(stPostData)> 0 then
begin
   {Require this header information if there is stPostData.}
   vHeaders:= 'Content-Type: application/x-www-form-urlencoded'+ #10#13#0;
   {Set the variant type for the vPostData.}
   vPostData:= VarArrayCreate([0, Length(stPostData)], varByte);
   for iLoop := 0 to Length(stPostData)- 1 do    // Iterate
   begin
     vPostData[iLoop]:= Ord(stPostData[iLoop+ 1]);
   end;    // for
   {Final terminating Character.}
   vPostData[Length(stPostData)]:= 0;
   {Set the type of Variant, cast}
   TVarData(vPostData).vType:= varArray;
end;
{And the other stuff.}
vWebAddr:= stURL;
{Make the call Rex.}

wbWebBrowser.Navigate2(vWebAddr, vFlags, vFrame, vPostData,vHeaders);  <<=== 여기서  Invalid variant type 에러 발생!!!!!!!!!!!!!!!

end;  {End of Navigate procedure.}
0  COMMENTS