string做参数的时候肯定会变:
typedef struct _PSHEDULERHEADER
{
int MediaType;
int FrameType;
int FrameSequence;
int FrameSize;
}PSHEDULERHEADER;
小弟我用VC写的activex,输出参数为上面这个结构,具体为LPCTSTR即BSTR,和Delphi对应的是
widestring,结果我使用类型强制转化后,前面两个只是正确的,后面两个无法转换.但是如果
四个参数都小于896的时候不会出错,总之碰到了很多问题.
delphi中我如下使用:
type TPSHEDULERHEADER= packed RECORD
MediaType: integer;
FrameType: integer;
FrameSequence: integer;
FrameSize: integer;
end;
type PPSHEDULERHEADER = ^TPSHEDULERHEADER;
procedure TForm1.BitBtn5Click(Sender: TObject);
var
senddata: array[1..50000] of char;
timestamp:integer;
begin
fillchar(senddata,sizeof(senddata),'a');
PPSHEDULERHEADER(@senddata)^.MediaType := 11111;
PPSHEDULERHEADER(@senddata)^.FrameType := 22222;
PPSHEDULERHEADER(@senddata)^.FrameSequence := 33333;
PPSHEDULERHEADER(@senddata)^.FrameSize := 44444;
DemoActivex.SendData(senddata);
end;
各位可以试试!