CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

一个指针的问题

楼主richardsu(richard)2002-04-23 11:11:22 在 Delphi / VCL组件开发及应用 提问

type   SockIndex=record  
            index:integer;  
            sock:TCustomWinSocket;  
            pop3:Tpop3;  
  end;  
   
  pSockIndex=^SockIndex;  
   
   
   
   
  procedure   TFrmMain.POP3SocketClientRead(Sender:   TObject;  
      Socket:   TCustomWinSocket);  
  var  
          i:integer;  
          sindex:pSockIndex;  
          sRec:PChar;  
          s:string;  
  begin  
                s:=   socket.ReceiveText;  
   
  //根据接收数据的SOCKET来判断属于链表中的指针  
          for   i:=0   to   iCount-1   do  
          begin  
                  sindex:=plist.Items[i];  
                  if   socket=sindex.sock   then  
                          begin  
                          sindex.pop3.ParseCommand(sRec);  
                          showmessage(inttostr(sindex.index));  
                          end;  
   
          end;  
   
        pop3.ParseCommand(s);  
   
  end;  
   
  procedure   TFrmMain.POP3SocketAccept(Sender:   TObject;  
      Socket:   TCustomWinSocket);  
  var  
   
          sindex:pSockIndex;  
          index:SockIndex;  
          pop:Tpop3;  
  begin  
          pop:=Tpop3.Create(nil);  
          pop.SetSock(socket);  
          pop.popstate:=Init;  
          pop.QuitFlag:=false;  
   
   
          index.pop3   :=pop;  
          index.sock   :=socket;  
          index.index   :=iCount;  
          sindex:=@index;  
          plist.Add(sindex);  
  iCount:=iCount+1;  
   
  end; 问题点数:100、回复次数:11Top

1 楼richardsu(richard)回复于 2002-04-23 11:14:04 得分 0

为什么在READ数据的时候根据socket无法找到对应的链表指针项?  
  请问各位大虾Top

2 楼hongliqiu(在火中)回复于 2002-04-23 11:15:51 得分 50

能不能说得详细一些?  
  在那一段出现问题?Top

3 楼maxsuy(魔法兔子)回复于 2002-04-23 11:26:55 得分 30

有难度Top

4 楼Dragon_ZJG(蝈蝈)回复于 2002-04-23 11:32:06 得分 0

针  
          for   i:=0   to   iCount-1   do  
          begin  
                  sindex:=plist.Items[i];  
                  if   socket=sindex.sock   then  
                          begin  
                          sindex.pop3.ParseCommand(sRec);  
                          showmessage(inttostr(sindex.index));  
                          end;  
   
          end;  
   
        强制转换一下:pSockIndex(sindex)  
  Top

5 楼maxsuy(魔法兔子)回复于 2002-04-23 11:59:07 得分 0

仍然不对,  
  是不是不能用SOCKET来对比是否符合?Top

6 楼torble(阿裕)回复于 2002-04-23 12:08:41 得分 0

试试这样:  
   
          for   i:=0   to   iCount-1   do  
          begin  
                  sindex:=plist.Items[i];  
                  //   改这里  
                  if   socket.Handle   =   pSockIndex(sindex)^.sock.Handle   then  
                          begin  
                          sindex.pop3.ParseCommand(sRec);  
                          showmessage(inttostr(sindex.index));  
                          end;  
   
          end;  
   
  实际上为了达到目的,定义SockIndex的时候只要存储   Socket   句柄就可以了。Top

7 楼torble(阿裕)回复于 2002-04-23 12:09:29 得分 20

试试这样:  
   
          for   i:=0   to   iCount-1   do  
          begin  
                  sindex:=plist.Items[i];  
                  //   改这里  
                  if   socket.Handle   =   pSockIndex(sindex)^.sock.Handle   then  
                          begin  
                          sindex.pop3.ParseCommand(sRec);  
                          showmessage(inttostr(sindex.index));  
                          end;  
   
          end;  
   
  实际上为了达到目的,定义SockIndex的时候只要存储   Socket   句柄就可以了。Top

8 楼maxsuy(魔法兔子)回复于 2002-04-23 12:20:10 得分 0

可是socket.handle还是不一样。  
  我的QQ:525931  
  可以跟我联系吗Top

9 楼torble(阿裕)回复于 2002-04-23 12:31:33 得分 0

我不用   QQ   的,你调试一下你的程序,看看问题出在哪儿。  
   
  先在   sindex:=plist.Items[i];   这一行设一个断点,然后单步跟踪   Socket.Handle   的值,祝你好运。Top

10 楼maxsuy(魔法兔子)回复于 2002-04-23 12:52:41 得分 0

跟踪了值了  
  不一样  
  ================================================================  
   
  CSDN   论坛助手   Ver   1.0   B0402提供下载。   改进了很多,功能完备!  
   
  ★     浏览帖子速度极快![建议系统使用ie5.5以上]。   ★     多种帖子实现界面。    
  ★     保存帖子到本地[html格式]★     监视您关注帖子的回复更新。  
  ★     可以直接发贴、回复帖子★     采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!    
  ★     支持在线检测程序升级情况,可及时获得程序更新的信息。  
   
  ★★   签名     ●      
            可以在您的每个帖子的后面自动加上一个自己设计的签名哟。  
   
  Http://www.ChinaOK.net/csdn/csdn.zip  
  Http://www.ChinaOK.net/csdn/csdn.rar  
  Http://www.ChinaOK.net/csdn/csdn.exe         [自解压]  
   
  Top

11 楼hongliqiu(在火中)回复于 2002-04-27 19:35:07 得分 0

解决了吧,呵呵。Top

相关问题

  • 指针!!!!
  • this指针
  • 指针?
  • 指针
  • 指针
  • 指针!
  • this指针
  • 指针??
  • 指针
  • 指针?

关键词

  • .net
  • 指针
  • socket
  • csdn
  • sindex
  • psockindex
  • sockindex
  • srec
  • 帖子
  • parsecommand

得分解答快速导航

  • 帖主:richardsu
  • hongliqiu
  • maxsuy
  • torble

相关链接

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

广告也精彩

反馈

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