Полезное применение хелперов
Как и обещал - выкладываю способ использования хелперов в Delphi, вместо правки исходников. Представим ситуацию, когда необходимо изменить какой-то базовый класс, для того, чтобы добавить новый функционал (или поправить баги) для всех наследуемых, от него, классов. Например, TStrings. Добавив что-то в него, можно это использовать в TStringList, а с ним и в TMemo, например.
Для простоты возьмем такой пример: необходимо добавить функцию Add, в которую можно передать что угодно и переданные данные будут добавлены в список. Согласитесь, данная задача не разрешима в D7, без наследования или модификации стандартных классов. Но данная задача легко разрешима, при использовании хелперов, в новых версиях Delphi:
unit uStringsHelper; interface uses Classes; type TStringsHelper = class helper for TStrings public function Add(const V: Variant): Integer; overload; function Add(const Args: array of Variant): Integer; overload; end; implementation uses Variants; function TStringsHelper.Add(const Args: array of variant): Integer; var Idx: Integer; begin Result := -1; lTemp := EmptyStr; for Idx := Low(Args) to High(Args) do begin if lTemp <> EmptyStr then lTemp := lTemp + sLineBreak; lTemp := lTemp + VarToStr(Args[Idx]); end; if lTemp <> EmptyStr then Result := Add(lTemp); end; function TStringsHelper.Add(const V: Variant): Integer; begin Result := Add([V]); end; end.
А вот пример использования:
with ListBox.Items do
begin
Add('delphist.ru');
Add(['Первая строка', 'Вторая строка', 'Третья строка']);
Add(2008);
Add(False);
end;
+0