CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  语言基础/算法/系统设计

请问在Delphi中指针的指针该如何定义?

楼主cool_tang()2004-12-01 23:12:39 在 Delphi / 语言基础/算法/系统设计 提问

在一个由C语言写的DLL中定义了一个回调函数,其中一个参数为Char   **buf;  
  由此我定义了一个如下类型type   pPChar   =   ^PChar(如果直接定义变量为buf:^PChar,无法编译通过);然后定义如下变量buf   :   pPChar;  
   
  可是我在编译的时候,编译器认为   Char   等价于   pPChar,这是怎么回事?望高手解答。  
  问题点数:20、回复次数:13Top

1 楼fbysss(独孤求败)回复于 2004-12-02 10:37:20 得分 8

procedure   TForm1.Button1Click(Sender:   TObject);  
  var   a:pointer   ;  
  b:Pointer;  
  begin  
      a   :=   @button1;  
      Showmessage(TButton(a^).Caption);  
      b   :=   @a;//b为a的指针  
      Showmessage(TButton(Pointer(b^)^).Caption);  
  end;Top

2 楼cool_tang()回复于 2004-12-02 11:17:32 得分 0

谢谢你的回答,这样用我也知道,关键是我需要定义回调函数中的一个参数类型,这个类型就是指向char类型的指针的指针。Top

3 楼fbysss(独孤求败)回复于 2004-12-02 11:24:10 得分 0

type   CharPt   =   ^Char;  
  type   PtOfCharPt   =   ^CharPt;  
  var   p   :   PtOfCharPt;Top

4 楼cool_tang()回复于 2004-12-02 11:44:33 得分 0

晕哦,兄弟,我就是这样做的啊,你可能没有看清楚我上面写的,但是编译器认为这样PtOfCharPt   等价于   Char。  
  再次谢谢。呵呵:)Top

5 楼wr960204(武稀松)回复于 2004-12-02 11:54:29 得分 5

procedure   TForm1.Button1Click(Sender:   TObject);  
  Type  
      PmChar=^Char;  
      pPmChar   =   ^pmChar;  
  var  
      C:Char;  
      Pm:PmChar;  
      ppm:pPmChar;  
   
   
  begin  
      C:='A';  
      //pPm:=c;//<--编译通不过的,谁说相等了  
      Pm:=@C;  
      PPM:=@PM;  
      SHowMessage(PPM^^);  
  end;Top

6 楼kiboisme(蓝色光芒)(www.1284.net/)(软件开发机器人for delphi)回复于 2004-12-02 11:56:45 得分 7

Function   (var   VP   :   PChar   ....)  
  就行了Top

7 楼kiboisme(蓝色光芒)(www.1284.net/)(软件开发机器人for delphi)回复于 2004-12-02 12:01:11 得分 0

type  
      TSK   =   procedure   (var   P   :   PChar);stdcall;  
   
  var  
      P   :   PChar;  
      SK   :   TSK;  
  begin  
      SK   :=   NIL;  
      Getmem(P,10);  
      FillChar(P,10,'A');  
      SK(P);     <-跟踪到这一行,然后按Alt+C   看esp的值,就知道了,ESP保存的是P变量的地址,  
      FreeMem(P);  
  end;  
  以上程序不能运行,只作调试看代码用Top

8 楼cool_tang()回复于 2004-12-02 12:03:05 得分 0

这就是我的回调函数:之前定义了ppChar   =   ^PChar  
  function   PdcPtlCallBackFunc(cType:   Integer;   dwCode:   LongInt;   dwDataSize:   LongWord;  
                                                          pData:PChar;   Buf:   pPChar;   UserData:   LongWord):   Integer;   cdecl;  
   
  在函数中我又定义了一个变量(t:   PChar),带参数的时候把Buf带进去了(本来该带t),结果编译器报错说(不兼容的类型   PChar   与   Char).  
   
  你们说这是怎么回事嘛。难道是PChar的原因?  
  Top

9 楼kiboisme(蓝色光芒)(www.1284.net/)(软件开发机器人for delphi)回复于 2004-12-02 12:22:25 得分 0

楼主,听我的,就用  
  var   P   :   PChar  
  就行了!Top

10 楼fbysss(独孤求败)回复于 2004-12-02 12:23:09 得分 0

把出错信息的英文原文贴出来看看Top

11 楼cool_tang()回复于 2004-12-02 12:57:27 得分 0

[Error]   CommonUnit.pas(357):   Incompatible   types:   'PChar'   and   'Char'  
  [Fatal   Error]   EDCS7960.dpr(17):   Could   not   compile   used   unit   'CommonUnit.pas'  
  这就是编译时报的错误信息Top

12 楼cool_tang()回复于 2004-12-02 13:03:40 得分 0

function   PdcPtlCallBackFunc(cType:   Integer;   dwCode:   LongInt;   dwDataSize:   LongWord;  
                                                          pData:PChar;   Buf:   pPChar;   UserData:   LongWord):   Integer;   cdecl;  
  begin  
  ...    
      case   cType   of  
          10:   //发送数据  
              begin  
                  if   (GetInstance_cType(gHComm)   =   1)   then  
                      begin  
                          //以TCP方式发送  
                          SendSocketDataA(TcpHandle,   dwDataSize,   Buf(本应为pData,不小心写错了),   0);    
                          ....  
    end  
                  else  
                      begin  
                          //port_write232port(GetInstance_232Handle(pComm),   datasize,   pdata);  
                          SendRS232Data(RS232Handle,   buf,   dwDataSize);  
                      end;  
              end;  
          11:  
              ...  
      end;  
  ....  
  end;  
   
  结果编译时就发生上面那贴的错误Top

13 楼cool_tang()回复于 2004-12-03 10:25:31 得分 0

没有人讨论了吗?那我结题了,谢谢各位的回答Top

相关问题

  • 在Delphi中如何自定义自己的鼠标指针?
  • 请教,delphi里数组的指针如何定义和引用的?
  • 我定义了一个类,如何定义一个类指针?
  • DELPHI如何使用指针?
  • ?在类的定义中,如何声明一个私有指针,并定义返回指针的函数?
  • 若要定义一个String 类型的指针变量该如何定义?
  • 如何在一个类中定义本类的指针
  • C++如何定义指向函数的指针?
  • 如何定义指向成员函数的指针?
  • 如何在函数的定义中引用函数指针???

关键词

  • 指针
  • 定义
  • pmchar
  • ptofcharpt
  • ppchar
  • 类型
  • pointer
  • buf
  • button
  • char

得分解答快速导航

  • 帖主:cool_tang
  • fbysss
  • wr960204
  • kiboisme

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo