Что мы на сегодняшний день знаем из постов блога WebDelphi про Synapse? Основной материал крутится вокруг модуля HTTPSend и, соответственно, объекта THTTPSend – как скачать данные с ProgressBar’ом, как обработать события сокета, как работать с https и т.д. Была пара публикация про TSMTPSend и отправку писем через Gmail…и пожалуй все. Ну оно (по-крайней мере для меня) вполне объяснимо – пишу про то, что в данный конкретный момент меня интересует, ну или очень сильно интересует кого-либо из читателей.
Сегодня я хотел бы затронуть в статье ещё один модуль Synapse, который хотите того Вы или нет обязательно задействуется в работе библиотеки и, который иногда может послужить для Вас очень неплохим подспорьем в работе с веб-сервисами в Delphi – сэкономить время на поиск в Сети, да и просто немного сократить объем Вашей программы.
Речь сегодня пойдет о модуле SynaUtil библиотеки Synapse.
Как, может быть, понятно из названия, SynaUtil – это модуль содержащий вспомогательные методы для работы с библиотекой. Однако методы, представленные в этом модуле могут быть эффективно использованы и в других случаях.
Например, все мы в курсе про стандартный модуль StrUtils в Delphi (кто не в курсе – живо смотрите. что он из себя представляет) – модуль без сомнения полезный, позволяет более удобно организовать работу со строками, есть функции типа ReverseString и т.д., что избавляет нас лишний раз гуглить на темы “Как перевернуть строку?” или “Как заменить текст?” и т.д.Однако SynaUtil добавляет ещё ряд довольно полезных методов для работы со строками, например следующие:
{Удаляет слева/справа/ с обеих сторон только пробелы} function TrimSPLeft(const S: string): string; function TrimSPRight(const S: string): string; function TrimSP(const S: string): string; {Возвращает строку, находящуюся слева/справа от Delimiter} function SeparateLeft(const Value, Delimiter: string): string; function SeparateRight(const Value, Delimiter: string): string;
Это далеко не весь перечень функций работы со строками. Есть методы для вытягиваия из строки email-адресов, разборов URL, поиск положения какой-либо подстроки слева или справа от заданного символа и т.д. Функций для работы со строками масса. Конечно не все они являются чем-то новым и неизученным, но тем не менее использование их в своей программе, которая использует Synapse позволит Вам лишний раз не отвлекаться на поиск решений в Интернете — всё уже есть под рукой.
Теперь движемся далее. Вы в курсе про модуль DateUtils? Уверен, что большинство моих читателей знают этот модуль вдоль и поперек, а часть как минимум знает о его существовании в глубинах Delphi. Кто не знает про DateUtils – советую, опять же, открыть и посмотреть на внутренности модуля. Полезная вещь, когда речь заходит о работе с TDateTime и временем вообще. Но и здесь не все предусмотрено (разработчики – они ж не Всемогущие), например, не предусмотрена работа с датой/временем записанными согласно разным RFC. И тут Вам на помощь снова может прийти модуль Synapse SynaUtil. Что у него есть для работы с датами:
{Возвращает временную зону согласно настройкам ОС в минутах} function TimeZoneBias: integer; {временная зона в виде строки, например, "+0200".} function TimeZone: string; {Переводит дату в формат RFC-822. (Например, 'Fri, 15 Oct 1999 21:14:56 +0200')} function Rfc822DateTime(t: TDateTime): string; {Переводит строку формата "m-d-y" в тип TDateTime} function GetDateMDYFromStr(Value: string): TDateTime; {Переводит различные строки, содержащие даты в тип Tdatetime. Формат строки может быть таким: ddd, d mmm yyyy hh:mm:ss ddd, d mmm yy hh:mm:ss ddd, mmm d yyyy hh:mm:ss ddd mmm dd hh:mm:ss yyyy Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850 Sun Nov 6 08:49:37 1994} function DecodeRfcDateTime(Value: string): TDateTime;
Особенно полезна для работы с различными API последняя функция — DecodeRfcDateTime.
Есть в этом модуле также и ряд других менее важных, но, тем не менее, полезных методов, например:
function ReadStrFromStream(const Stream: TStream; len: integer): AnsiString; procedure WriteStrToStream(const Stream: TStream; Value: AnsiString);
В общем, при работе с Synapse никогда не стоит забывать про этот замечательный модуль SynaUtil. Экономьте свое время и силы, т.к. множество рутинных операций для которых нет методов в «штатных» модулях Delphi можно решить с использованием методом из вспомогательного модуля Synapse:)
Книжная полка
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
|
||
Название: О чем не пишут в книгах по Delphi
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
|
Я бы ещё добавил про модуль synachar и очень полезные функции для работы с экзотическими кодировками.
Nik, согласен. Классный модуль :)