Delphi: сделать Unicode RAR-компонент 2.0 - PullRequest
1 голос
/ 12 июня 2011

У меня есть RAR-компонент 2.0 и Delphi 2010. Этот компонент использует AnsiString для пути к файлу.Как я могу сделать это Unicode?Я изменил AnsiString на String в RAR.pas, но это не помогло.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 13 июня 2011

В RAR.pas :

  • Измените TRARArchiveInformation * fFileName и свойство Filename на WideString .
  • Измените TRAR.OpenFile, чтобы аргумент FileName был WideString .
  • В TRAR.OpenArchive(Extract:boolean) изменить эту строку:

    ArcName := PAnsiChar(fArchiveInformation.FileName);

    к этому:

    ArcNameW := PWideChar(fArchiveInformation.FileName);

In RAR_DLL.pas :

Измените GetFileModifyDate, чтобы эта строка:

h := OpenFile(PAnsiChar(FileName), Struct, OF_SHARE_DENY_NONE);

это:

h := FileOpen(FileName, fmOpenRead or fmShareDenyNone);

и удалите строку Struct: TOFSTRUCT; из блока var .

1 голос
/ 12 июня 2011

Если я посмотрю на исходный код, с которым вы только что связались, я думаю, вам не нужно ничего менять.Похоже, он уже должен поддерживать 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.Вы пытались использовать это?

Может быть, это как-то все еще не работает (я сам еще не пробовал это с символами Юникода), но если это не работает, то может быть полезно, если вы опишитечто не так с немного более подробной информацией.

О, и просто чтобы быть уверенным: вы используете Delphi 2009+ верно?

...