Delphi:制作unicode RAR-component 2.0

时间:2011-06-12 16:36:57

标签: delphi unicode components ansi rar

我有RAR-component 2.0和Delphi 2010.此组件使用AnsiString作为文件路径。我怎样才能让它成为unicode?我在RAR.pas中将AnsiString更改为String,但它没有帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

RAR.pas

  • TRARArchiveInformation 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;行。

答案 1 :(得分:1)

如果我查看您刚刚链接到的源代码,我认为您无需进行任何更改。它看起来应该已经支持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字符),但是如果这不起作用,那么如果你用更多的细节描述出了什么问题,它可能会有所帮助。 / p>

哦,只是为了确定:你正在使用Delphi 2009+吗?