将 TUnicodeString 转换为 TString?

Convert TUnicodeStrings to TStrings?

在 Delphi XE7 中,我使用 Anders Melander 著名的 DragAndDropSuite。该套件中的 TDropFileTarget 组件将丢弃的文件返回为 TUnicodeStrings。但是,我需要在具有 TStrings 参数的过程中使用这些文件:

procedure DoSomethingWithTheseFiles(const AFiles: TStrings);
begin
  // Do something...
end;

procedure DropFileTarget1Drop(Sender: TObject;
    ShiftState: TShiftState; APoint: TPoint; var Effect: Integer);
begin
  DoSomethingWithTheseFiles(DropFileTarget1.Files); // TUnicodeStrings
end;

因此使用此代码我得到错误 E2010 Incompatible types: 'TStrings' and 'TUnicodeStrings'

那么如何将 TUnicodeStrings 转换为 TStrings

TUnicodeStrings 支持 TPersistentAssign()AssignTo() 方法。它知道如何将字符串 to/from 复制到 TStrings 对象,例如:

Strings.Assign(UnicodeStrings);

或者:

UnicodeStrings.AssignTo(Strings);

在你的情况下它看起来像这样:

var
  Strings: TStringList;
begin  
  Strings := TStringList.Create;
  try
    Strings.Assign(DropFileTarget1.Files);
    DoSomethingWithTheseFiles(Strings);
  finally
    Strings.Free;
  end;
end;