用delhpi 7 中文简体版 + 中文环境 开发;
第一次实验:第一步:
在日文电脑中,我用FindFirst和FindNext读出文件名,第二步:
把读到的文件名赋给edit1.text中,第三步:
然后再把edit1.text存到一个自定义类中,(下面是这个自定义类)type 
  xxx = record
    name: string[255];
  end;第四步:
然后再把整个自定义类发给中文电脑中,下面是发送的代码,
 IDUDPServer1.SendBuffer(123.123.123.123, 12345, xxx, SizeOf(xxx));第五步:
中文电脑接收后,显示的是乱码。(下面是接收并显示的代码)
AData.ReadBuffer(xxx, AData.size);
showmessage(xxx.name); //显示乱码

第二次实验:第一步:
在日文电脑上,用鼠标和键盘复制文件名 (就是用Ctrl+C) 。第二步:
把复制的文件名,用鼠标和键盘粘贴到edit1.text中(就是用Ctrl+V) ,第三步:
然后再把edit1.text存到一个自定义类中,(下面是这个自定义类)type 
  xxx = record
    name: string[255];
  end;第四步:
然后再把整个自定义类发给中文电脑中,下面是发送的代码,
 IDUDPServer1.SendBuffer(123.123.123.123, 12345, xxx, SizeOf(xxx));第五步:
中文电脑接收后,显示正确。(下面是接收并显示的代码)
AData.ReadBuffer(xxx, AData.size);
showmessage(xxx.name); //显示正常
第三个实验:在日文电脑中,我用FindFirst和FindNext读出文件名,再用系统API函数模仿剪贴板,把文件名复制粘贴到edit1.text上面,再发送,中文电脑接收后,还是乱码
第四个实验:在日文电脑中,我用FindFirst和FindNext读出文件名,存到memo中,把memo的内容存为TXT文本文件,用U盘把TXT文件拷贝到中文电脑上,打开TXT文件显示正常。
--------------------------------------------------------------------问:为什么用系统剪贴板获取的文件名发送后,显示正常,我在不能换delphi 7简体中文版的情况下,如何破这个难题?

解决方案 »

  1.   

    用FindFirstW和FindNextFileW,传递unicode文件名。PS:不要跟我求代码
      

  2.   

    回二楼:
    百度查了一下,没有你所说的两个函数,你所说的这两个函数是本论坛一个叫ahjoe的用户自己写的,没有公开.回三楼:
    我知道有差异,用FindFirst把文件名读到edit1.text里面,和用鼠标键盘复制粘贴到edit1.text里面,这时edit1.text显示的是不同的乱码.呵呵,我不管它显示什么,我只需要接收的时候,显示正确就行了,所以跟踪并不能解决问题.
      

  3.   

    你只找到了差异,没有找到差异的具体原因,也就是没有深入下去。
    提示:你可以直接把文字转码,查查为什么相同的文字,而内码不同?是unicode, ansicode的原因吗?
    如果是,你要想想或查查如何转换?没人知道你传送和接收的码。
      

  4.   


    什么时候变成ahjoe个人写的了?windows.pas下面就有定义,windows很多API有ansi和unicode两个版本,使用方法是一样的,只不过参数从ansi变成unicode而已。查FindFirstFile,FindNextFile就行了。用百度查技术资料,很掉价。
    其实很明显了,日文以MBCS方式传递,到中文系统不做转换肯定乱码了。用MultiByteToWideChar,传递日本的code page转换就可以显示了。
      

  5.   

    网络中间传输文本最好是使用UTF-8格式编码。
      

  6.   

    对,或者发送MBCS的同时,发送codepage,可以节省点流量。
      

  7.   

    对,或者发送MBCS的同时,发送codepage,可以节省点流量。
    感谢您的指点,你说的这些函数都是我没有用过的,我先在网上查一下相关的例子.验证一下,先谢谢你!
      

  8.   

    感谢各位大大的回复,我现在已经搞定了,搞定的方法是code page,就是先读出源机器的语言编码页,再转成目标机器的语言编码,比如
    中文是简体中文(大陆)        936
    繁体中文(台湾、香港)  950
    日文(日本)            932
    韩文(韩国)            949 呵,好了,散分