델 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.}