其实用lazarus很久(也不算久啦。。),目前打算做完手头的最后一个小程序然后就转向c#窗体程序。。之前用lazarus的时候出了很多问题,资料也不是很好找,所以这回把比较容易说的记下来省得忘掉。

Lazarus读取中文文件名并显出来这个过程并没多大问题,但是实际会出现各种各样的问题。比如加载一个路径或标题包含中文的文件,软件显示出来的路径甚至正常但是就是不能正常使用文件。那么,先上解决方案好了。。

当你获取文件路径时,这样处理文件路径:

   pathvar:=utf8toansi(FilePath); 

这样之后,使用文件时就可以通过pathvar调用文件而不出错。不过,如果这样处理后,想要在窗体中显示文件名,你还需要做如下工作:

   Label1.Caption:=ansitoutf8(FilePath);

实际使用时,你需要使用的是转为ansi的路径字符串,但是为了显示不出乱码,你需要将处理过的路径在显示时转回utf8.

我的某个程序中的一部分代码(节选):

   with OpenDialog1 do
begin
Filter:='TGE GUI File(*.gui)|*.gui';
DefaultExt:='gui';
FileName:='';
Options:=[ofHideReadOnly,ofEnableSizing];
if Execute then
if ofExtensionDifferent in Options then
Options:=[ofHideReadOnly,ofEnableSizing]
else
begin
filepath:=utf8toansi(FileName); //*1
end;
end;
end;
Label1.Caption:=ansitoutf8(filepath); //*2
if not FileExists(PChar(filepath)) then exit; //*3
assignfile(guiFile, filepath);//'test.gui'
reset(guiFile);
assignfile(guiFile, filepath);//*4
reset(guiFile);

上面的代码中,FileName就是直接获取到的文件的路径,在一开始(*1)用filepath记录了变量。之后在下面(*2)为了显示正常而转回utf8用语Label的显示,之后在(*3和*4)的调用中,直接使用了filepath。这样就是正常的了。

以上是上面所摘抄部分代码的原来的程序执行时的样子。

Lazarus解决含中文文件名或路径的使用问题的更多相关文章

  1. TCPDF解决保存中文文件名的方法

    PHP使用TCPDF生成PDF文件时,如果文件名是中文会被直接过滤掉,以下是TCPDF不能保存中文文件名的解决方法: 打开tcpdf.php文件,找到output函数,大约在8467行 或(7554) ...

  2. wordpress上传含中文文件名出现乱码

    一.首先到FTP里面找到wp-admin/includes/file.php这个文件. 二.查找wp_handle_upload在文件里面找到以下代码. function wp_handle_uplo ...

  3. 解决 git 中文路径显示 unicode 代码的问题

    解决 git 中文路径显示 unicode 代码的问题 当被修改的文件中带有中文字符时,中文字符会被转换为 unicode 代码,看不出原来的文件名. 这时,只要配置 :: git config -- ...

  4. 完美解决ExtJs6上传中文文件名乱码,后端SpringMVC

    ExtJs上传中文文件名乱码,观察请求. ExtJs6上传乱码从后台无法解决,因为文件名请求里面就已经乱码了,后台无法解码. 除非请求参数正确没有乱码,后台因为编码设置不一样,可以通过后台处理乱码 这 ...

  5. PHP中file_exists()判断中文文件名无效的解决方法

    php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档时是无效.本文就来解决此问题,下面我们一起来 ...

  6. 解决NTKO Office中文文件名保存到服务器时出现乱码的问题

    再使用NTKO office控件时,在ntko往服务器提交文件时,中文文件名会出现乱码的问题! 其实解决这个问题可以换一种思路,在ntko往服务器提交文件时英文肯定是不会出现乱码的问题的! 那么想办法 ...

  7. 解决file_get_contents遇到中文文件名无法打开问题

    利用file_get_contents打开文件或采集远程服务器文件如果文名或url中碰到汉字中文那么会出现failed to open stream:Lnvalid argument in错误.   ...

  8. Sublime text 3 中文文件名显示方框怎么解决?

    如图,中文文件名打开全是乱码,内容倒是装了converttoutf8没什么太大的问题. -------------------------------------------------------- ...

  9. 【转】Sublime text 3 中文文件名显示方框怎么解决

    引用自:http://www.zhihu.com/question/24029280 如图,中文文件名打开全是乱码,内容倒是装了converttoutf8没什么太大的问题. 这个是sublime te ...

随机推荐

  1. Android EditText限制输入一些固定字符的属性

    android:digits="abcdefghijklmnopqrstuvwxyz1234567890" 仅仅能输入这些

  2. 项目总结——SqlParameter的参数设置长度(size属性)

    看到很多朋友在实例化SqlParameter时,通常都没有指定参数的长度就直接给参数赋值了.就像下面的写法: new SqlParameter("@address", SqlDbT ...

  3. Shell命令行

    利用wc命令统计文件行,单词数,字符数,利用sort排序和去重,再结合uniq可以进行词频统计. cat file.txt sort hello.c | uniq -c | sort -nr |hea ...

  4. 对js中prototype的理解

    一直不理解child.prototype = new Parent()和child.prototype =Parent.prototype的区别,到现在为止,我觉得它俩最大的区别就是:前者共享构造器里 ...

  5. ckplayer网页播放器简易教程

    前言 ckplayer是一款在网页上播放视频的免费视频插件,该插件兼容性强.使用简单.api齐全.另外,任何个人网站或商业网站在不修改右键版权的基础上都可以免费使用. 下面将对ckplayer的整个使 ...

  6. ThInkPHP中的常量

    除了常规变量的输出外,模板引擎还支持系统变量和系统常量.以及系统特殊变量的输出.它们的输出不需要事先赋值给某个模板变量.系统变量的输出必须以$Think.打头,并且仍然可以支持使用函数.常用的系统变量 ...

  7. SVG彩虹字

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)

    Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListe ...

  9. 跳转APP(app之间互相通信)

    摘要 步骤: 1,添加URL Types项 2,配置URL Scheme 3,其他应用的跳转 4,参数的接收   开发IOS项目的时候,有可能会遇到两个APP应用相互调用的需求,比如说:支付宝支付.. ...

  10. mongodb高可用集群搭建

    集群构架图如下: 集群大致文件结构:(192.168.137.101节点) 先搭建3个副本集 rs1/mongod.conf rs1/start.sh rs2/mongod.conf 后面类似.... ...