уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

О наиболее ярких обновлениях в Delphi XE3 я вчера кратко рассказал. Но, как часто бывает, помимо того, что находится «на вывеске» (типа новый FireMonkey, Metropolis UI, Visual LiveBindings и т.д.) в новой версии Delphi есть также и менее заметные на первый взгляд, но не менее важные и интересные обновления. Ну, например, вспомним про выход Delphi XE — тогда у всех на слуху была поддержка Subversion, обновленная DataSnap и т.д. и т.п. Однако мало тогда кто обратил внимание, что в Delphi XE появилась поддержка регулярных выражений. Вроде бы и не так значимо как обновление в DataSnap, но, тем не менее, важное и нужное обновление особенно для тех кто пишет парсеры.

Или вспомним про выход Delph XE2. Внушительный перечень обновлений и улучшений. Про FireMonkey, LiveBindings и поддержку Mac’ов узнали все буквально в первый же день после выхода RAD Studio XE2. Но, опять же мало кто заметил про улучшения в модулях для работы с JSON или про новый тип TOSVersion. И это, в принципе, нормально — вначале надо посмотреть, что появилось в новой версии «по-крупному», а уже потом смотреть на частные вещи.

И вот теперь вышла Delphi XE3, которая помимо обновлений в FireMonkey и LiveBindings принесла с собой и довольно интересные обновления в RTL. Вот об одном из этих обновлений и пойдет сегодня речь.

Кроме того, что в RTL появились (были перемещены или написаны с нуля) некоторые методы и типы данных для работы с FireMonkey, например, TVector3D или Vector3D, в Delphi XE3 также появились и новые хэлперы для работы с простыми типами данных.  Например, появился хэлпер для работы со строками и теперь можно написать, например, вот такой код, которой скомпилируется и будет работать:

var S : string;
begin
   S:='Hello World';
   S.Insert(6, 'Delphi ');
   ShowMessage(S);
end;

Думаю, что тем, кто знаком с такими языками как Java или C# такой код покажется очень знакомым. Всего в хэлпере для string определено штук 25 разных методов для работы со строками. В редакторе кода этот перечень методов выглядит примерно вот так:

Никто нам не запретит написать и свой хэлпер для другого типа, например, такой:

type
  TIntegerHelper = record helper for Integer
    function ToString: string;
  end;
//....//
function TIntegerHelper.ToString: string;
begin
  Result:=System.SysUtils.IntToStr(Self)
end;

И потом вызывать необходимый нам метод:

var I:integer;
begin
   I:=1234;
   ShowMessage(I.ToString);
end;

Аналогичным образом в Delphi XE3 могут использоваться хэлперы и для других типов, например, для массивов (используя при этом хэлпер, который описан выше):

 TIntArray =  array of integer;
 
 type
  TArrayHelper = record helper for TIntArray
    public
      function ToString: string;
      class function Create(Length: integer):TIntArray;static;
  end;
 
{ TArrayHelper }
class function TArrayHelper.Create(Length: integer): TIntArray;
var i:integer;
begin
  SetLength(Result, Length);
  for I := 0 to High(Result) do
     Result[i]:=random(10);
end;
 
function TArrayHelper.ToString: string;
var
  I: Integer;
begin
  Result:=EmptyStr;
  for I := Low(self) to High(self) do
    Result:=Result+' '+self[i].ToString;//используем TIntegerHelper
end;

Также мы можем определять хэлперы и для перечислителей. Более того — хэлперы будут работать и в случае использования констант, например так:

 ShowMessage('Hello World'.ToUpper);
 ShowMessage(Integer(10).ToString);

Что можно сказать по поводу хэлперов в Delphi XE3? По-моему очень отличное нововведение, позволяющее сэкономить время и подсократить размеры своих исходников. В общем, качайте с сайта Embarcadero пробные версии и попробуйте эту фишку в действии самостоятельно — оно того стоит :).

Книжная полка

Описание Подробно рассматривается библиотека FM, позволяющая создавать полнофункциональное программное обеспечение для операционных систем Windows и OS X, а также для смартфонов и планшетных компьютеров, работающих под управлением Android и iOS
купить книгу delphi на ЛитРес
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
Описание: Книга рассчитана на подготовленного пользователя ПК, желающего самостоятельно научиться программировать и разрабатывать приложения и базы данных в среде Delphi. Опытные программисты смогут использовать издание как справочник. В тексте подробно описаны более 80 компонентов VCL, функции Object Pascal и Win32 API.
купить книгу delphi на ЛитРес
Автор: Юрий Магда
Описание: Описаны общие подходы к программированию приложений MS Office. Даны программные методы реализации функций MS Excel, MS Word, MS Access и MS Outlook в среде Delphi.
купить книгу delphi на ЛитРес
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
17 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
utmost80
utmost80
05/09/2012 00:27

Ну похвально, лучше поздно чем никогда.
А об изменениях в компиляторе статья будет?

Андрей
Андрей
05/09/2012 00:42

Самое интересное — это то, что разработчики должны быть больше заинтересованы в «мелких» улучшениях, чем в «крупных с вывески», потому что «мелкие» можно применить сразу, а до «крупных» дело может и не дойти, т.к. «проект большой и портировать его нет времени…»

teran
05/09/2012 00:58

Пожалуй поддержка zip архивов в ХЕ2 была более значительна чем TOSVersion :)

Alex Egorov (UsefulSoft.com)
05/09/2012 10:37

Спасибо за информацию

pet
pet
05/09/2012 11:05

хелперы есть и в ХЕ2, а новизна их в ХЕ3 выглядит как
«Three new helper types (TSingleHelper,TDoubleHelper, and TExtendedHelper) replace the following record types: TSingleRec, TDoubleRec, TExtendedRec, extensively.»

pet
pet
05/09/2012 11:24

Вышеописанный код для Integer в X3 не работает.
Нижеописанный работает.

TInteger = record
Value: Integer;
end;
TIntegerHelper = record helper for TInteger
function ToString: string;
end;

function TIntegerHelper.ToString: string;
begin
Result:=System.SysUtils.IntToStr(Self.Value)
end;

pet
pet
05/09/2012 11:24

Опечатка *XE2

Mister В
Mister В
05/09/2012 15:20

2 pet:
Тоже захотелось написать хелпер к Integer в XE2, а никак (( В вашем случае тогда и указывать придётся TInteger, что сводит на нет прелесть реализации в XE3.

Дима
Дима
06/09/2012 11:19

осталось дождаться всех используемых доп. компонент и смело переходить на xe3

Human Cat
Human Cat
07/09/2012 08:49

Почему тогда ошибки обнаруживаются?

[img]http://pbs.twimg.com/media/A2KEX1RCIAEWhQc.jpg[/img]

Human Cat
Human Cat
07/09/2012 16:54

программа запускается. я про «errors insight». выключил его.

alexray
alexray
08/09/2012 01:22

Я уж жду не дождусь когда же будет сборка и под Линух!

Алексей Тимохин

Очень приятное нововведение.
Я считаю, что именно такие мелочи и делают работу с языком/IDE более приятной. В языке/IDE может быть поддержка хоть ста-тысяч-миллионов разных платформ и архитектур, но этот продукт будет менее популярным, чем язык/IDE в котором удобство и скорость работы продумано до мелочей.

Anonymous
Anonymous
27/09/2012 10:56

TStringHelper.ToLower и TStringHelper.ToUpper не подерживают кириллицу. Нужно использовать TStringHelper.ToLowerInvariant и TStringHelper.ToUpperInvariant