델파이 7이구요.
OCX를 사용하고 있습니다.
OCX의 함수를 호출합니다. 그 함수의 리턴 타입이 Variant이구요
var vBuf : OLEVariant;
vSize : Integer;
ByteData : array of char;
begin
vBuf := OCXXXXX.OnGetData(nCh);
vSize := VarArrayHighBound(vBuf, 1) - VarArrayLowBound (vBuf, 1) + 1;
//이렇게하면 ByteBuf의 Size는 정상적으로 리턴됩니다.
SetLength(ByteData, vSize);
CopyMemory(@ByteData , @vBuf, vSize);
//ByteData에 데이터가 들오는데 정상적인 값이 아닌것 같습니다.
//리턴되는 데이터가 일반적인 String이 아니라 Binary데이터라서 조금 더 힘들어지네요.
다른 방법으로 Variant값을 델파이의 char배열에 넣을 수 있을까요?
VarArrayLock로 배열의 포인터를 얻어와서 작업해보세요...
자세한것은 델파이헬프와 예제를 참고해보시구요...
^^ 항상 즐코하세요...