타입과 내용이 들어가는 구조체로 이루어져있구요. 2개의 멤버를 가짐
1. vt 멤버에 타입정보,
2. 기타 유니언 형태의 멤버(밑에서 보듯이 위의 타입에 따라 이름이 바뀜)에 내용정보가 들어갑니다.
참고 : 코딩한거 일부 / /
VARIANTARG rgArg[2]; // 버라이언트 변수 2개 선언
VariantInit(&rgArg[0]); // 첫번째 것 초기화....
rgArg[0].vt=VT_I4; // long형 타입을 쓰겠다..
rgArg[0].lVal=1004; // 값 입력
VariantInit(&rgArg[1]); // 두번째 것 초기화
rgArg[1].vt=VT_BSTR; // BSTR형 타입(unicode 문자열..앞에 길이 붙음~ 컴포넌트 자동화 타입 중 문자열 유일)
rgArg[1].bstrVal=SysAllocString(L"버주카 포"); // 메모리 할당해서 값 입력... 반드시 저 함수로만 사용(정해짐)
SysFreeString(rgArg[1].bstrVal); // 위에 문자열 경우 메모리에 할당했으므로 반드시 해제
VariantInit는 초기화 비슷한데....vt에 VT_EMPTY를 넣어줌..... 바로 입력할 것이면 안써도 별 상관없으나.
그냥 습관적으로 쓰이는 것 같더군요.
참고로 VariantClear(&변수);의 경우 스마트하게 해제시켜주는 거에요...문자열이면 문자열 메모리 해제...
인터페이스 포인터면 그것도 해제....포괄적인 해제라 그런지 자주 안쓰이고요
위의 경우도 이 함수를 써도 되는데 보통 문자열 해제는 저렇게 하더라구요.
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=741937&ref=741902
[출처] VARIANT 해제|작성자 핵이
'[ Programing ] > Algorithm' 카테고리의 다른 글
TickTime -> Date 구조체로. localtime_s (0) | 2013.12.20 |
---|---|
OS(운영체제) 이름 알아오기 (0) | 2013.11.14 |
길찾기 알고리즘 링크 (0) | 2013.05.21 |
욕설 필터 및 문자 검색 (0) | 2011.10.10 |
케릭터 간 거리 측정 (0) | 2011.07.14 |