V
vbfgm
Unregistered / Unconfirmed
GUEST, unregistred user!
c++源程序如下
LONG OnStkDataOK(UINT wParam,LONG lParam)
{
RCV_DATA * pHeader;//类型说明
.....
pHeader = (RCV_DATA *)lParam;
.....
}
其中RCV_DATA数据类型定义如下
typedef struct tagRCV_DATA
{
int m_wDataType; // 文件类型
int m_nPacketNum; // 记录数,参见注一
RCV_FILE_HEADEx m_File; // 文件接口(结构类型)
BOOL m_bDISK; // 文件是否已存盘的文件
union //以下均是结构指针类型
{
RCV_REPORT_STRUCTEx * m_pReport;
RCV_REPORT_STRUCTEx1 * m_pReport1;
RCV_HISTORY_STRUCTEx * m_pDay;
RCV_MINUTE_STRUCTEx * m_pMinute;
RCV_POWER_STRUCTEx * m_pPower;
void * m_pData; //
};
} RCV_DATA,*PRCV_DATA;
以上我翻译成delphi程序如下
RCV_DAta结构定义如下
JET_RCV_DATA=record
m_wDataType:integer; // 文件类型
m_nPacketNum:integer; // 记录数,参见注一
m_File:JET_RCV_FILE_HEADEx; // 文件接口(记录类型)
m_bDISK:boolean; // 文件是否已存盘的文件
case integer of
0m_pReportJET_RCV_REPORT_STRUCTEx);
1m_pReport1JET_RCV_REPORT_STRUCTEx1);
2m_pDayJET_RCV_HISTORY_STRUCTEx);
3m_pMinuteJET_RCV_MINUTE_STRUCTEx);
4m_pPowerJET_RCV_POWER_STRUCTEx);
5m_pDataointer); //
end;
PJET_RCV_DATA=^JET_RCV_DATA;//结构指针
源程序翻译如下
procedure TStockForm.OnStkDataOK(var Msg: TMessage); //Jet消息处理
var i,j:integer; stkdataJET_RCV_DATA;
begin
new(stkdata);
label1.Caption:=inttohex(msg.WParam,0)+','+inttohex(msg.LParam,0);
stkdata:=ptr(msg.LParam); //msg.LParam指向结构指针
.........
dispose(stkdata);
end;
以上程序运行没问题,就是在退出时总是显示‘invalid pointer operation’错误
尤其是‘stkdata:=ptr(msg.LParam);’这个语句,只要没他就不会出现上述错误,可是没他不成呀
请高手解决
LONG OnStkDataOK(UINT wParam,LONG lParam)
{
RCV_DATA * pHeader;//类型说明
.....
pHeader = (RCV_DATA *)lParam;
.....
}
其中RCV_DATA数据类型定义如下
typedef struct tagRCV_DATA
{
int m_wDataType; // 文件类型
int m_nPacketNum; // 记录数,参见注一
RCV_FILE_HEADEx m_File; // 文件接口(结构类型)
BOOL m_bDISK; // 文件是否已存盘的文件
union //以下均是结构指针类型
{
RCV_REPORT_STRUCTEx * m_pReport;
RCV_REPORT_STRUCTEx1 * m_pReport1;
RCV_HISTORY_STRUCTEx * m_pDay;
RCV_MINUTE_STRUCTEx * m_pMinute;
RCV_POWER_STRUCTEx * m_pPower;
void * m_pData; //
};
} RCV_DATA,*PRCV_DATA;
以上我翻译成delphi程序如下
RCV_DAta结构定义如下
JET_RCV_DATA=record
m_wDataType:integer; // 文件类型
m_nPacketNum:integer; // 记录数,参见注一
m_File:JET_RCV_FILE_HEADEx; // 文件接口(记录类型)
m_bDISK:boolean; // 文件是否已存盘的文件
case integer of
0m_pReportJET_RCV_REPORT_STRUCTEx);
1m_pReport1JET_RCV_REPORT_STRUCTEx1);
2m_pDayJET_RCV_HISTORY_STRUCTEx);
3m_pMinuteJET_RCV_MINUTE_STRUCTEx);
4m_pPowerJET_RCV_POWER_STRUCTEx);
5m_pDataointer); //
end;
PJET_RCV_DATA=^JET_RCV_DATA;//结构指针
源程序翻译如下
procedure TStockForm.OnStkDataOK(var Msg: TMessage); //Jet消息处理
var i,j:integer; stkdataJET_RCV_DATA;
begin
new(stkdata);
label1.Caption:=inttohex(msg.WParam,0)+','+inttohex(msg.LParam,0);
stkdata:=ptr(msg.LParam); //msg.LParam指向结构指针
.........
dispose(stkdata);
end;
以上程序运行没问题,就是在退出时总是显示‘invalid pointer operation’错误
尤其是‘stkdata:=ptr(msg.LParam);’这个语句,只要没他就不会出现上述错误,可是没他不成呀
请高手解决