在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;