Q&A

  • variant 배열의 데이터 형을 알고 싶습니다.
arr : array of variant;

로 선언한 다음에

arr에 integer를 넣든 string을 넣든
arr의 데이터 형을 알 수 있는 방법을 알려 주세요.

예를 들어 저 arr 배열을 함수로 넘기고 싶은데

저 arr배열의 데이터 형에 맞게 작업을 하고 싶습니다

즉, string일 경우 showMessage(arr[1]); 식으로 출력을 하고

int 일 경우에는 arr[1] + arr[2]의 계산을 하는 식으로 할꺼거든요~


고수님들 도움 좀 부탁 드릴꼐요~ 감사합니다.
4  COMMENTS
  • Profile
    홍성락 2008.01.23 06:18
    srhong////////////////////////////////////////////////////
    variant형은 unit Variants에 있는 함수사용해보세요
    <!--CodeS-->
    function VarType(const V: Variant): TVarType;
    begin
      Result := TVarData(V).VType;
    end;
    <!--CodeE-->

    예제는
    <!--CodeS-->
    var
      pValue : Variant;
    begin
    try
        if (pValue <> null)and(Length(pValue) > 0)  then begin
            if varType(pValue) in [VT_BSTR] then
               result := WideString(pValue)
            else
               result := CurrToStr(pValue);
        end;

      except
        result := '';
      end;
    <!--CodeE-->


  • Profile
    황경수 2008.01.23 19:35
    [VT_BSTR]을 알수가 없다고 나오네요. 제가 너무 초보라서 그런데 조금더 구체적인 소스 예 좀 들어 주시면 감사 하겠습니다.

    그리고 혹시 if 문 말고 아예 데이터형을 반환받는 함수는 없을까요?

    너무
  • Profile
    홍성락 2008.01.23 21:04
    [VT_BSTR]은 ActiveX에 있어요, 제가 사용하는건 ActiveX에서 받아오는건데요 다른건 호환적일지는 모르겠네요,
    TVarType은 System유닛에 있는데요 찾아보십시요.
    if 문 대신 VarType를 써도 됩니다.
    Variants의 함수들을 사용하세요, 널일때만 조심해서 try로 묶든가요.


  • Profile
    황경수 2008.01.28 20:25
    님 같은 고수님들 덕분에 또 하나 배워 가네요~ 감사합니다.