type
 tagRCV_REPORT_STRUCTEx = record
       m_wMarket : WORD;
       m_szLabel : string[255];
 end; tagRCV_DATA = record
      m_wDataType : integer;
      m_pReport : ^tagRCV_REPORT_STRUCTEx );
 end;var 
 pHeader:^tagRCV_DATA;
 p_RCV_DATA:^tagRCV_DATA;
    
procedure TForm1.ShowStock(lPara:longint);
var
  strLabel:string[100];
begin
   pHeader := p_RCV_DATA(@lPara);
   strLabel:=pHeader^.m_pReport^.m_szLabel;
end;

解决方案 »

  1.   

    问题在什么地方出错?
    lPara是什么东西?怎么定义和赋值的?
      

  2.   

    应该正确
    改成这样应该也可以
    type 
      tagRCV_REPORT_STRUCTEx=^TtagRCV_REPORT_STRUCTEx;
     TtagRCV_REPORT_STRUCTEx = record
           m_wMarket : WORD;
           m_szLabel : string[255];
     end;
     tagRCV_DATA=^TtagRCV_DATA;
     TtagRCV_DATA = record
        
          m_wDataType : integer;
          m_pReport : tagRCV_REPORT_STRUCTEx );
     end;var 
     pHeader:tagRCV_DATA;
     p_RCV_DATA:tagRCV_DATA;
        
    procedure TForm1.ShowStock(lPara:longint);
    var
      strLabel:string[100];
    begin
       pHeader := p_RCV_DATA(@lPara);
       strLabel:=pHeader^.m_pReport^.m_szLabel;
    end;
      

  3.   

    lPara就是消息中的LParam,类型是LONG;
    出错问题是"访问地址出错0xffffffff"
      

  4.   

    pHeader := p_RCV_DATA(@lPara);
    strLabel:=pHeader^.m_pReport^.m_szLabel;
    肯定会出错,将一个longint类型赋给p_RCV_DATA类型,然后访问m_szLabel(m_szLabel根本没有值,m_PReport也没有赋值,所以访问m_PReport肯定会出错)