将 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
支持 TPersistent
的 Assign()
和 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;
在 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
支持 TPersistent
的 Assign()
和 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;