Delphi 7,TFileStream无法打开带有特殊字符的文件

2024-02-18

这行:

TFileStream.Create(fileName, fmOpenRead or fmShareDenyNone);

如果文件名包含类似的内容,则会抛出异常ñ


你最终是在呼唤CreateFileA、ANSI API,并且您使用的字符没有 ANSI 编码。这only超越这个的方法是打开文件CreateFileW、Unicode API。

你可能没有意识到你打电话CreateFileA,但这就是 Delphi 7 文件流的实现方式。

解决问题的一种简单方法是升级到最新的 Delphi,它对本机 Windows Unicode API 有良好的支持。

如果你被 ANSI Delphi 困住了,那么你仍然需要调用CreateFileW。您可以执行此操作来创建文件句柄。您需要将 UTF-16 字符串传递给该 API。使用WideString来存储它。您还需要从用户处获取 UTF-16 格式的文件名。这意味着致电GetOpenFileNameW or IFileDialog。通过将文件句柄传递给创建流THandleStream.

为了使这一切成为可能,您可以使用 TNT Unicode 库。它们工作得很好,但会给你带来很大的负担。

坦率地说,正确的前进方向是使用支持 Unicode 的现代工具。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi 7,TFileStream无法打开带有特殊字符的文件 的相关文章

随机推荐