在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支持Assign()AssignTo()TPersistent方法。它知道如何向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;

10-08 05:21