インターフェースを使用する理由に関する 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 が定義されているのを確認できません。オンラインで OLE プログラミングに関連して参照されていますが、Classes.pas にはありません。それは存在しますか?これは有効な単純化ですか?Delphi XE2 を使用しています。