Synapse delphi

Вступление

Часто, чтобы раскритиковать программистов на Delphi, используют простой и дешёвый трюк. Мол, мы, истинные программисты пишем весь код ручками, а вы, делфисты, набросали компонентов и всё.

На самом деле весь код ручками пишут только фанатики и те, кому нечего делать. А нормальные программисты используют готовые библиотеки. Компоненты Delphi на самом деле тоже являются самыми настоящими библиотеками, просто написаны с учётом некоторых особенностей Delphi.

Но доказывать это им бессмысленно – всё равно будут сопротивляться (чтобы они согласились?). Мы пойдём другим путём – будем использовать самую что не наесть библиотеку — и пусть медитируют себе.

В качестве примера я представляю библиотеку Synapse (http://synapse.ararat.cz/doku.php). По возможностям эта библиотека соответствует популярным Indy, только стабильность у неё получше. К примеру, почту с вложениями отправлять/принимать или файлы по https качать на ней проще простого. А вот с Indy нужно хорошо помучаться.

И главный плюс этой библиотеки – полностью бесплатна с удобной BSD лицензией — можно использовать в своих приложениях — как бесплатных, так и в коммерческих, без каких-то отчислений. Но автор абсолютно не против, если вы подкинете ему пару копеек.

Установка библиотеки

Для начала нужно скачать библиотеку с сайта. Или просто взять в прилагаемом к статье архиве. Теперь распакуем куда-нибудь во временный каталог. Создадим папку, где будет располагаться сама библиотека – у меня это обычно каталог C:\Program Files\CodeGear\Components\Synapse. То есть, я, не стесняясь, создаю каталог в каталоге Delphi, и ставлю туда свои библиотеки/компоненты. Хотя некоторые сочтут это идеологически неверным – можно создать каталог для библиотек и в любом другом месте, главное, чтобы его потом не удалили. Второе условие – чтобы путь содержал только латинские символы. Иначе бывают проблемы с некоторыми компонентами. Один из посетителей сайта www.delphi.int.ru делает оригинально — он хранит всё это прямо на рабочем столе. А потом ругается, мол, ничего не работает.

Скопируем в новосозданную папку содержимое папки source\lib из распакованного архива.

Остался последний шаг – объяснить Delphi, что у нас есть новая библиотека. Для этого просто нужно прописать каталоги для поиска.

В случае с Delphi 2006-2007 это делается так:

  • File -> Close All. При надобности сохраните текущий проект (это страховочное действие, не помешает).
  • Tools -> Options. В появившемся диалоге в дереве слева находим Environment options -> Delphi Options -> Library – Win32.
  • Ищем поле Browsing path. Жмём кнопку […] справа от него.
  • В появившемся окне ищем снова кнопку […] и, нажав её, выбираем каталог, куда сохранили содержимое библиотеки и жмём ОК.
  • Теперь Add и ОК для закрытия окна.
  • Повторяем предыдущие три действия, только для поля Library Path.

Если же у вас Delphi 7 или младше, то нужно в меню Tools найти пункт Environment Options, а потом вкладку Library. Всё остальное — очень похоже.

Сделай это по-простому

Так, библиотека установлена, пора написать что-то простенькое. Например, научимся скачивать страничку из интернета и отображать в Memo. Создаём новый проект, Ставим на форму Memo, растянем нормально и включим полосы прокрутки установкой свойства ScrollBars = ssBoth. Ставим на форму кнопку, кликая дважды по ней, создаём обработчик. Но перед написанием обработчика, надо добавить один юнит в список uses, а именно – httpsend.

А теперь сам обработчик. Приготовились увидеть сверхсложный код? Вот он – одна строчка:

HttpGetText(http://вашсайт.нет', Memo1.Lines)

Не правда ли просто? Но на самом деле, лучше написать немного сложнее:

if not HttpGetText('http://вашсайт.нет', Memo1.Lines) then ShowMessage('Не получилось скачать:(');

Этот код нужен только для контроля ошибок, но это часто важно. Интересно, что если страничку не удастся скачать, то никаких ошибок не будет, просто функция возвратит false. Иногда очень удобно, особенно в потоках.

Замечателен и следующий факт. Так как библиотека является лёгкой обёрткой над обычными сокетами, то это сказывается на размере выполняемого файла. Этот же пример, переписанный с использованием Indy весит на 30% больше – а это весомый аргумент (если быть точнее, то в цифрах два исполнимых файла у меня весили 404 и 530 кбайт).

Добавить комментарий