Q&A

  • EVariantError "invalid variant type conversion"
제목에 있는 "invalid variant type conversion" 이란 에러메세지가 계속 뜨네요

어디에 뭘 잘못 기입을 했는지 도무지 못찾겠네요. ㅠㅠ



아무리 찾아봐도 잘못된 곳을 모르겠는데, 보통 이 에러는 어떤것을 잘못 설정하거나

코딩했을 때 나오는지..



고수님들 알켜줘요~



그럼 답변 기달기고 있겠슴다..^^

2  COMMENTS
  • Profile
    hugehead 2000.08.09 22:52
    Variant Type은 여러 종류의 타입 형을 (정수, 실수, 문자열 등) 저장할 수 있는 변수 타입입니다. 흔히 COM/DCOM/ActiveX 프로그램에 많이 쓰이지요. 이 에러는 이렇게 저장한 Variant Type를 잘못 변환하려 할때 나는 에러이지요.



    Integer 로 선언한 변수를 String 변수에 대입하는 코드를 짜면 컴파일 할 때 에러가 나지요? 그것은 컴파일 당시에 이것이 명확한 프로그램 오류이기 때문에 납니다.



    그런 Variant 타입에는 도대체 값이 정수가 올지 문자열이 올지 컴파일 당시에는 모릅니다. 그래서 나중에 실행할때 이러한 문제가 발생하면 에러가 나지요.



    예를 들자면:



    procedure Maldallija(iCnt : Integer);

    var

    vTrans : Variant;

    strRes : String;

    begin

    vTrans := iCnt; //프로시저가 받은 integer parameter를

    //vTrans Variant에 저장합니다. 문제없음.

    strRes := vTrans; //Integer 데이터를 string 타입으로 넣으려고 합니다.여기서

    //에러 발생.

    end;



    이해가 가셨는지요.





    webcome wrote:

    > 제목에 있는 "invalid variant type conversion" 이란 에러메세지가 계속 뜨네요

    > 어디에 뭘 잘못 기입을 했는지 도무지 못찾겠네요. ㅠㅠ

    >

    > 아무리 찾아봐도 잘못된 곳을 모르겠는데, 보통 이 에러는 어떤것을 잘못 설정하거나

    > 코딩했을 때 나오는지..

    >

    > 고수님들 알켜줘요~

    >

    > 그럼 답변 기달기고 있겠슴다..^^

  • Profile
    우정범 2000.08.09 20:36
    webcome wrote:

    > 제목에 있는 "invalid variant type conversion" 이란 에러메세지가 계속 뜨네요

    > 어디에 뭘 잘못 기입을 했는지 도무지 못찾겠네요. ㅠㅠ

    >

    > 아무리 찾아봐도 잘못된 곳을 모르겠는데, 보통 이 에러는 어떤것을 잘못 설정하거나

    > 코딩했을 때 나오는지..

    >

    > 고수님들 알켜줘요~

    >

    > 그럼 답변 기달기고 있겠슴다..^^



    잘 모르지만..제 경험담을 적어드릴께요..



    ActiveX Control 을 사용할때 난 에러인데요..



    procedure TForm1.Button1Click(Sender: TObject);

    var

    Temp : OleVariant; <-- 변수선언이 있어야 합니다.

    begin

    WebBrowser1.Navigate(DirE.Text,Temp,Temp,Temp,Temp);

    end;



    참고로 WebBrowser1 은 IE 5.0 ActiveX Control 이고요..

    함수선언은..

    procedure Navigate(const URL: WideString; var Flags: OleVariant;

    var TargetFrameName: OleVariant; var PostData: OleVariant;

    var Headers: OleVariant);

    이렇게 되어있습니다.