我有RAR 组件 2.0和 Delphi 2010。这个组件使用 AnsiString 作为文件路径。我怎样才能使它成为unicode?我在 RAR.pas 中将 AnsiString 更改为 String 但没有帮助。
谢谢!
我有RAR 组件 2.0和 Delphi 2010。这个组件使用 AnsiString 作为文件路径。我怎样才能使它成为unicode?我在 RAR.pas 中将 AnsiString 更改为 String 但没有帮助。
谢谢!
在RAR.pas 中:
fFileName
字段和Filename
属性更改为WideString。TRAR.OpenFile
为FileName
参数是WideString。在TRAR.OpenArchive(Extract:boolean)
更改此行:
ArcName := PAnsiChar(fArchiveInformation.FileName);
对此:
ArcNameW := PWideChar(fArchiveInformation.FileName);
在RAR_DLL.pas 中:
改变GetFileModifyDate
这一行:
h := OpenFile(PAnsiChar(FileName), Struct, OF_SHARE_DENY_NONE);
这是:
h := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
并从var块中删除该Struct: TOFSTRUCT;
行。
如果我查看您刚刚链接到的源代码,我认为您无需更改任何内容。看起来它应该已经支持 unicode。作者声称它适用于 Delphi 2009,我看到 TRarProcessFile() 有两个版本:
TRARProcessFile = function(hArcData: THandle; Operation: Integer; DestPath, DestName: PAnsiChar): Integer; stdcall;
TRARProcessFileW = function(hArcData: THandle; Operation: Integer; DestPath, DestName: PWideChar): Integer; stdcall;
TRARProcessFileW 应该接受带有 Unicode 字符的文件名。你试过用那个吗?
也许它仍然无法正常工作(我自己还没有尝试过使用 Unicode 字符),但如果这不起作用,那么如果你更详细地描述出了什么问题,也许会有所帮助。
哦,请确定:您使用的是 Delphi 2009+ 对吗?