찌요리~~ 님이 쓰신 글 :
: 안녕하세엽~~~
:
: ActiveX컨트롤이 있는데요, UDT Variant 로 값을 반환하는 함수가 있습니다
:
: 근데....이거 원래 구조체로 어케 바꿔여? ㅡ_ㅡ;;;
:
:
: 음..예를 들면
:
: 임포트된 ActiveX 컨트롤 파스칼 파일중에 다음과 같은 레코드 정의가 나타납니다
:
: // *********************************************************************//
: // Declaration of structures, unions and aliases. //
: // *********************************************************************//
:
: ...
: ...(중략)
: ...
:
: UDT = packed record
: x: Integer;
: y: Integer;
: end;
:
: ...
: ...(중략)
: ...
:
: procedure TTest.GetUDT(var pVal: OleVariant);
: begin
: ControlInterface.GetUDT(pVal);
: end;
:
:
: 위에 함수가 Variant로 반환하지만 실제로 안에 들어있는건 UDT 레코드입니다
: 아래처럼 값을 얻는건 간단한데... 그담은 어떠케 하죠?
: (아래 부분은 걍 빈프로젝츠 열어서 폼 더블클릭한 함수입니다)
:
: procedure TForm1.FormCreate(Sender: TObject);
: var
: val: OleVariant;
: begin
: Test1.GetUDT(val);
: end;
:
:
: 답변 꼭 부탁드려영~~~~~ ^___________________^
:
:
type
PUDT = ^UDT;
StickyVariant = packed record
vt: Word;
reserved1: Word;
reserved2: Word;
reserved3: Word;
udt: PUDT;
pRecInfo: Pointer;
end;
PStickyVariant = ^StickyVariant;
procedure TForm1.FormCreate(Sender: TObject);
var
val: OleVariant;
psv: PStickyVariant;
begin
Test1.GetUDT(val);
psv := Pointer(@val);
ShowMessage(IntToStr(psv.udt.x));
end;
|