我感兴趣地阅读了关于为什么你应该使用接口的 Nick Hodges 博客 ,因为我已经在我的编码中爱上了更高级别的接口,所以我决定研究如何将其扩展到相当低的级别并调查哪些支持因为这存在于 VCL 类中。
我需要的一个常见构造是使用 TStringList 做一些简单的事情,例如此代码将一个小文本文件列表加载到逗号文本字符串中:
var
MyList : TStrings;
sCommaText : string;
begin
MyList := TStringList.Create;
try
MyList.LoadFromFile( 'c:\temp\somefile.txt' );
sCommaText := MyList.CommaText;
// ... do something with sCommaText.....
finally
MyList.Free;
end;
end;
如果我可以使用 MyList 作为接口进行编写,这似乎是一个很好的简化——它将摆脱 try-finally 并提高可读性:
var
MyList : IStrings;
//^^^^^^^
sCommaText : string;
begin
MyList := TStringList.Create;
MyList.LoadFromFile( 'c:\temp\somefile.txt' );
sCommaText := MyList.CommaText;
// ... do something with sCommaText.....
end;
虽然我看不到定义的 IStrings - 当然不是在 Classes.pas 中,尽管在线 OLE 编程中有对其的引用。它存在吗?这是有效的简化吗?我正在使用德尔福 XE2。