Код для интерфейса с TStrings и TStringList

Я с интересом прочитал блог Ника Ходжеса на Почему вы Следует использовать интерфейсы и поскольку я уже люблю интерфейсы на более высоком уровне в моем кодировании, я решил посмотреть, как я могу расширить это до довольно низких уровней, и исследовать, какая поддержка для этого существует в классах 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 в Интернете. . Он существует? Это допустимое упрощение? Я использую Delphi XE2.

7
задан David Heffernan 1 February 2012 в 12:56
поделиться