CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

***********百思不得其解,高手看看,关于字符串的***************

楼主harrypotter(哈里*波特)2001-10-30 15:47:08 在 VC/MFC / 基础类 提问

我在两个进程中通信,其中一个是CB编写的,另一个是VC编写的,主要是传递一个字符串,我在CB中的代码如下所示:  
      AnsiString   sFile   =   "D:\\coWork\\a.dwg";  
                  HWND   hWnd   =   FindWindow(NULL,"网络消息处理窗口");  
                  char   *   cFileName;  
                  cFileName   =   new   char[sFile.Length()+1];  
                  strcpy(cFileName,sFile.c_str());  
                  cFileName[sFile.Length()]='\0';  
                  //下面的代码是把cFileName放入一个结构中,用WM_COPYDATA消息传递到另一    //个进程  
                  COPYDATASTRUCT   cds;  
  cds.dwData   =   sFile.Length();  
  cds.cbData   =   sizeof(char)*(sFile.Length());  
  cds.lpData   =   cFileName;  
                  Application->MessageBox((char   *)cds.lpData,"",MB_OK);  
                  int   iResult   =   SendMessage(hWnd,WM_COPYDATA,0,(LPARAM)&cds);      
   
   
  在另一个进程中用VC写的接收:  
       char   *pszFileName=new   char   [pCopyDataStruct->cbData+1];  
  strcpy(pszFileName,(char   *)pCopyDataStruct->lpData);  
   
  现在的问题是,我能保证数据肯定是传过去了,但每次在vc端的进程中得到的数据有时不对,就是得到的字符串除了有D:\\coWork\\a.dwg外,末尾还有几个字节的乱码。这种错误不是每次都有,有时候出现有时候又不出现。  
   
  请大家看看我的代码,到底错在哪儿。CB中的AnsiString 与char还有什么区别吗?  
   
  谢谢。  
   
   
  问题点数:85、回复次数:11Top

1 楼jason802(小糊涂仙)回复于 2001-10-30 16:05:15 得分 30

确定最后一位是'\0',否则后面有几个乱码Top

2 楼Dala(Dala)回复于 2001-10-30 16:05:55 得分 10

不懂。你用char   *   cFileName   =   "D:\\coWork\\a.dwg";  
  代替下面一堆不行吗?再用strlen代替AnsiString.Length  
                  AnsiString   sFile   =   "D:\\coWork\\a.dwg";  
                  char   *   cFileName;  
                  cFileName   =   new   char[sFile.Length()+1];  
                  strcpy(cFileName,sFile.c_str());  
                  cFileName[sFile.Length()]='\0';  
  Top

3 楼quengzi(Hades)回复于 2001-10-30 16:07:49 得分 20

char   有unicode   和ANSI两种,一般vc工程中为unicodeTop

4 楼jason802(小糊涂仙)回复于 2001-10-30 16:08:52 得分 0

在VC中用单步执行一下,看char指针最后一位值是不是0Top

5 楼harrypotter(哈里*波特)回复于 2001-10-30 16:25:59 得分 0

to   Dala(大拉):  
            我用AnsiString   sFile   =   “d:\\coWork\\a.dwg”,是因为我用的是CB中的TOpenDialog,该对话框返回的是AnsiString。  
   
  to   quengzi(snowolf) :  
            这两者有什么区别。  
   
  to   jason802(小糊涂仙) :  
          我在vc的程序中写成这样:  
                    char   *pszFileName=new   char   [pCopyDataStruct->cbData+1];  
                    strcpy(pszFileName,(char   *)pCopyDataStruct->lpData);  
                    pszFileName[pCopyDataStrruct->cbData]   =   '\0';  
  也同样有上面的问题。  
   
   
   
   
   
   
   
   
   
  Top

6 楼harrypotter(哈里*波特)回复于 2001-10-30 16:30:17 得分 0

我现在想知道是不是我用AnsiString   的方法Length()得到的字符串的长度实际上是不对的。Top

7 楼Kevin_qing()回复于 2001-10-30 16:38:55 得分 10

gu   ji   shi   CB   chu   cun   string   de   fang   shi   bu   yiyang,  
  ke   neng   shi   zhe   yang   de   .  
  struct   string{  
  DWORD   length;  
  char     data[];//not   terminate   with   0  
  };  
   
  er   VC   shi  
  struct   string{  
  char   data[];//terminate   with   0  
  };  
   
  Top

8 楼harrypotter(哈里*波特)回复于 2001-10-30 19:08:56 得分 0

还是不对呀Top

9 楼treamboy(亲月)回复于 2001-10-30 20:44:32 得分 5

对,,,“char   有unicode   和ANSI两种,一般vc工程中为unicode   ”Top

10 楼lownr(廖宇雷)回复于 2001-10-30 20:59:58 得分 10

可以使用内存文件映射在进程间共享数据。  
  参考一下下面的帖子:  
  http://www.csdn.net/expert/topic/342/342249.shtmTop

11 楼harrypotter(哈里*波特)回复于 2001-11-02 15:34:11 得分 0

问题没解决,但还是给分Top

相关问题

  • 向各位大虾请教一个关于字符串替换的问题,我百思不得其解。
  • 百思不得其解~~????
  • 百思不得其解
  • 百思不得其解
  • 百思不得其解??
  • 百思不得其解??
  • 百思不得其解
  • 百思不得其解!
  • 字符串.....哎,字符串
  • 截字符串???

关键词

  • 代码
  • 数据
  • unicode
  • vc
  • sfile
  • cfilename
  • 字符串
  • cowork
  • pszfilename
  • pcopydatastruct

得分解答快速导航

  • 帖主:harrypotter
  • jason802
  • Dala
  • quengzi
  • Kevin_qing
  • treamboy
  • lownr

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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