用paramstr(1)函数获得了记录文件包含路径的文件名,结果文件的中文路径出现了乱码。

解决方案 »

  1.   

    路径就是paramstr(1)函数返回的,是这样的:D:\新建文件夹\新建文件夹\wenjianming.pmt,后缀自己定的。
      

  2.   


    原型         function   paramstr(i:index):string 
            对于任何application paramstr(0)都默认代表的是应用程序的绝对路径。那么有paramstr(0),就肯定
    有paramstr(1),paramstr(2)...了。它们的值又是什么了?我试了下取出的是空值,又不能赋值。
            delphi帮助中说Returns a specified parameter from the command-line.从命令行中返回一个特别的参数。折腾了半天才搞清楚,就是在exe文件后面可以跟参数,paramstr 获取的就是exe文件后面跟参数。
            如有可执行文件project1.exe 在运行中输入   e:\project1.exe 123 456 789 
            那么paramstr(1)='123' paramstr(2)='456' paramstr(3)='789'
            用shellexecute的话可以在parameters参数位置输入值。不同的参数值之间用空格隔开
    如 shellexecute(application.Handle,'open','project4.exe','123 456', 'e:\',SW_SHOW);
            所以用paramstr可以在应用程序间进行数据传输。
      

  3.   

    我试了一下,如果自己搞一个后缀名,再与某一个应用程序进行关联,在这些事情全部搞完以后,如果用鼠标双击一个自定义后缀名的文件,就会打开与之关联的应用程序。在这个应用程序里可以查看paramstr函数的返回值,paramstr(0)是建立文件关联时,应用程序所在的地址(这个地址已被写入注册表了),这个没有出现乱码。paramstr(1)返回的是鼠标双击的记录文件(后缀名的文件)的的地址,这个地址的中文部分会出现乱码。
      

  4.   

    猜想是.Net或者Java调用Delphi的程序时,传的参数是WideString类型,而不是AnsiString。
      

  5.   

    不是,是文件关联,当用鼠标双击记录文件时,在打开的应用程序里通过paramstr(1)获得被鼠标双击的记录文件的地址。
      

  6.   

    肯定不是什么乱码,而是要弄清对方传进来的字符编码,是Ansi,还是Unicode。
      

  7.   

    你可以用showmessage(变量);
    进行调试一下看看是什么问题》》》》》》》》》》