pCallbackData 파라메터가 구조체 배열을 가지는 OleVariant 타입입니다.
배열로 변환해서 값을 표시하는게 문제네요.
어느부분이 잘못 된것인지 부탁드립니다.
<!--CodeS-->
procedure TForm1.g_pAnnCom3AnnEventUserPosList(ASender: TObject; nResult,
nDataCnt: Integer; var pCallbackData: OleVariant);
type
TArrayData = array of record
nPosCode: Integer;
bstrPosName, bstrPhone: string;
nPriceCode, nFreeSMSCnt: Integer;
bInternationalCall, bPermitCIDtoFreePack: Boolean;
end;
var i: Integer;
PArrayData: TArrayData;
begin
SetLength(PArrayData, nDataCnt);
Move(pCallbackData, PArrayData, Sizeof(TArrayData) * nDataCnt);
showmessage( inttostr( PArrayData[0].nPosCode )); <- 정상값이 아님...
end;
<!--CodeE-->
VarArrayLock함수로 배열포인터를 가져와서 작업하세요...
구조체안에 string형이 있는것은 좀 의문이네요...
type
PArrayData = ^TArrayData;
TArrayData = array[0..0] of record // 혹은 TArrayData = array[0..데이터크기] of record
nPosCode: Integer;
bstrPosName, bstrPhone: string;
nPriceCode, nFreeSMSCnt: Integer;
bInternationalCall, bPermitCIDtoFreePack: Boolean;
end;
var
P: PArrayData;
begin
P := VarArrayLock(pCallbackData);
try
뭔가 작업;
finally
VarArrayUnlock(pCallbackData);
end;