Почему я продолжаю использовать устаревшие виртовский Pascal и Delphi-7 / Habr
(О разработке алгоритмов, их описании и программной реализации)
(Модель античного святилища Аполлона в Дельфах)
Почему я продолжаю использовать устаревшие виртовский Pascal и Delphi-7?
Этот вопрос мне часто задают мои коллеги, сослуживцы по работе и здесь на Хабре. Решил ответить сразу всем в этой заметке.
Мои научные интересы в основном принадлежат области математической (или, как еще называют — компьютерной) химии. Это применение теории графов к фундаментальным и прикладным задачам органической химии (немного подробнее см.).
Для решения этих задач я применяю уже известные алгоритмы, иногда их модифицирую, а иногда делаю новые. Решение научной задачи обычно предполагает последующую публикацию в рецензируемом научном издании. Еще до начала работ стоит подумать: в каком виде я собираюсь описать новый алгоритм?
В настоящее время можно выделить четыре распространенных способа такого описания.
1. Описание на естественном языке, пожалуй, самый легкий способ. Это древнейший способ. Евклид (около 300 года до н.э.) и Эратосфен (276 год до н. э.) его использовали. Переводы и пересказы описаний их знаменитых алгоритмов широко применяются по сей день. Но и новейшие алгоритмы часто описывают этим способом. Правда, математических формул в таких описаниях стало сильно больше, по сравнению с древними описаниями. Основной недостаток этого способа — многозначность многих слов естественных языков. Поэтому существует не малый риск, что автора поймут неоднозначно. И т.о. не смогут воспроизвести его алгоритм. А воспроизводимость — одно из основных условий научного метода.
2. Описание на псевдокоде. Тоже очень популярный способ. Тут можно выделить два подхода:
2.1. Изобретение оригинального псевдокода. Так Дональд Кнут для своей знаменитой монографии «Искусство программирования для ЭВМ» специально придумал компьютер MIX и ассемблер MIXAL. Тут явный недостаток — высокий порог входа.
Для первого издания этой монографии в прошлом веке, такой подход, возможно, был оправдан. К настоящему времени создано много эмуляторов MIX, позволяющих увидеть, как работают коды из книги. Но для не очень большой статьи изобретение оригинального языка не представляется оправданным.2.2. Использование для псевдокода упрощенной версии существующего ЯП. Про этот подход будет сказано ниже.
3. Описание на ЯП. По сути, это уже не описание алгоритма, а его реализация в виде программы. Здесь недостатки очевидны. Если читатель не знаком с применяемым ЯП, то ему может быть сложно (от слова «совсем») понять суть алгоритма. Детализированная публикация программы может вызвать сложности в бумажном издании — недостаток места. А места обычно нужно больше, чем в первых двух способах. И чтение всей программы целиком, потребует больше времени и внимания.
4. Описание с помощью блок-схемы. Этот способ уже довольно давно стал популярным. Еще Эдсгер Дейкстра его использовал в «Заметках по структурному программированию».
Для описаний небольших алгоритмов блок-схемы, безусловно, очень привлекательны своей наглядностью. Но, к сожалению, с ростом числа ветвлений и циклов блок-схема разрастается и повышается трудность восприятия. В случае бумажного представления формат бумаги может оказаться мал для блок-схемы. В связи с этим нужно упомянуть визуальный ЯП ДРАКОН, в котором предприняты меры по преодолению означенных неудобств. Однако применение специального ЯП может вернуть нас к способу 3.
Исходя из сказанного, я выбрал для себя способ 2.2. На мой взгляд, одним из наиболее подходящих для псевдокода является виртовский Pascal. Его, похоже, знают и помнят все программисты, а кто не знает — стесняется в этом признаться. Pascal-образный (Pascal-like) псевдокод интуитивно понятен (всем кто знаком, хотя с одним универсальным ЯП) и обычно хорошо структурирован, если нарочно не засорять его чем-то громоздким, и, конечно же, не использовать пресловутый goto. Для такого псевдокода доступны чекеры, и не только спелл-чекеры для правки комментариев, но и код-чекеры для кода.
В роли последних выступают компиляторы и интерпретаторы Pascal. Например, очень удобен Dr Pascal. Превратить текст на псевдокоде в съедобный для транслятора обычно труда не составляет. Мне представляется очень важным, что Pascal — жестко типизированный ЯП, последовательно реализующий принципы защитного программирования. – На этапах разработки и проверки алгоритма, средства минимизации багов очень важны. А вот трюки, типа неявных преобразований бывают вредными.Два слова про комментарии: считаю, что комментировать нужно уже в описании алгоритма. Причем комментировать достаточно подробно – это поможет поиску ошибок, и при написании статьи. Бывают трудные задачи, которые непонятно, как решать. Тогда я начинаю со способа 1. Записываю идеи решения в текстовой файл. Далее пытаюсь детализировать эти записи, выделить подзадачи и перейти к способу 2.2. Аналогично поступаю, если есть ТЗ. Правлю копию ТЗ с целью перейти к способу 2.2. Фразы от способа 1 оформляю комментариями. Такой прием помогает выбрать значимые имена.
Еще про значимые имена – они очень важны, но комментарии не отменяют. Попробуйте впихнуть в значимое имя фразу: загрузить из архивного файла, записи для товарных вагонов, расшифровать их, пустые вагоны добавить в таблицу свободных вагонов. Получите довольно длинное имя, которое либо каждый раз безошибочно набирать, либо копировать, что может потребовать частые промотки текста. Код с такими много раз повторяющимися именами будет объемнее, чем код с единственным комментарием.
Следующим шагом после написания и описания нового алгоритма может быть его реализация и испытания полученной программы. Иногда это оправдано до доказательства корректности и теоретических оценок эффективности. — Зачем оценивать алгоритм, который врет. Для реализации использую IDE Delphi-7. Здесь у меня личная историческая причина. К примеру, если мой алгоритм на графах, то для испытаний нужно будет грузить графы. Их быстрее набирать в виде списка смежности, а для алгоритма нужна матрица смежности. Ну не писать же мне для каждого алгоритма процедуры трансляции списка в матрицу? — Понятно, что возьму эти процедуры из своего старого кода. Но почему Delphi-7, а не более новое? — К сожалению, проблемы несовместимости. Ну, а зачем с виртовского Pascal переносить на ОО Pascal Delphi? — Он ОО; зачастую даже для испытаний полезен или, даже, нужен GUI; иногда нужно испытать параллельный алгоритм и т. д. Использую не только свои старые процедуры I/O, но и, к примеру, реализацию поиска кратчайшего пути в графе, сортировку и т.д.
Но, конечно, «устарелость» Delphi-7 дает себя знать. OpenCV удалось применить и надписи в GUI Юникодом сделать (иначе под Windows 10 у моего любезного тестера не читались), а вот для CUDA пришлось переходить на C++. Отмечу, что когда программирую, то offline под Windows ХР SP 3 (с отсутствием Юникода в Delphi-7 проблем не возникает), а для online гружу другую ОС.
Говоря про испытания алгоритма, нужно отметить, что удачная работа программы — это хорошо, но, зачастую, не достаточно. Обычно нужно математически строгое доказательство.
После успешной проверки можно причесать программу. Сделать GUI удобным, подумать об оптимизации.
Здесь я написал про свой подход. Он, конечно, не единственный.
Как установить Delphi 7 на Windows 7
Delphi 7 – интегрированная среда на языке Delphi, предназначения для разработки ПО для Microsoft Windows. Но прежде чем вы станете разработчиком, вам необходимо правильно установить и настроить Delphi 7, чтобы не возникало проблем с совместимостью.
Особенно это актуально для пользователей, которые установили Windows 7 – здесь ошибки появляются так часто, что без инструкции не разобраться. Поэтому давайте посмотрим, как установить Delphi 7 на Windows 7.
Установка
Если вы не хотите решать проблемы с совместимостью, настоятельно рекомендуете задуматься об установке более современной версии Delphi.
Вставьте диск или смонтируйте образ. Если установщик не запустится автоматически, откройте его вручную.
На экране появится сообщение об обнаружении проблем совместимости. Можно нажать «Поиск решений», однако вряд ли вам поможет эта функция. Поэтому просто нажмите «Запуск программы», чтобы приступить к инсталляции.
В главном меню выберите «Delphi 7», чтобы запустить мастера установки.Никаких неожиданностей при инсталляции не будет: серийный номер, лицензионное соглашение, тип установки (полный, компактный, ручной). Единственный момент – выбор папки, в которую сохранятся все файлы программы. Здесь есть два варианта:
- Оставить путь по умолчанию (Program Files), тогда вам придется выполнить два дополнительных действия, чтобы заставить программу работать корректно.
- Выбрать любую папку, не требующую для записи прав администратора (например, «Мои документы»). Этот способ проще, но использовать его не рекомендуется.
Дальше нужно лишь дождаться окончания инсталляции и попытаться запустить Delphi 7 на Windows 7.
После инсталляции
Если вы выбрали вариант со стандартной установкой и скопировали все файлы приложения в директорию «Program Files», вам нужно изменить разрешения.
Для этого:
- Пройдите по пути C:\Program Files\Borland\Delphi 7.
- Найдите папку «Bin» и щелкните на неё правой кнопкой.
- Откройте «Свойства» и перейдите на вкладку «Безопасность».
- Нажмите «Изменить» и установите для группы пользователи галочку «Разрешить» в строке «Изменение».
- Выйдите, нажав кнопку «ОК».
Первый запуск программы необходимо произвести от имени администратора. Второй и последующий старт Delphi 7 можно делать в обычном режиме.
Дело в том, что во время первого запуска перезаписываются файлы в директории с программой. Современные же системы Windows по умолчанию запрещают любые манипуляции с этими файлами, что в итоге приводит к появлению ошибок.
Добавление справочной системы
После изменения разрешений Delphi 7 можно использовать для написания программ. Но если вы нажмете клавишу F1, чтобы вызвать справку, то получите сообщение о том, что старая справочная система больше не является частью Windows.
В сообщении должна быть ссылка на статью из базы знаний Microsoft. Перейдите в неё и скачайте обновления для справочной системы. Важно правильно указать версию Windows, а также пройти проверку подлинности ОС.
После этого Delphi 7 будет работать в привычном режиме, не выдавая больше никаких ошибок совместимости.
Подготовка Delphi 7 и 2005 Заявки для тестирования
Применяются к Testleft 15. 40, последнее изменение 17 марта 2022 г.
TestLeft раскрывает Public , Опубликовано , Защищенные и Private членов объектов в Delphi. приложение компилируется с отладочной информацией. В этом разделе объясняется, как включить отладочную информацию в приложения, созданные с помощью Borland Delphi v. 7 или Borland Delphi 2005 для Win32.
Компилятор Delphi генерирует отладочную информацию в формате TD32, которая компилируется в двоичные модули приложения. Однако можно извлечь отладочную информацию в отдельные файлы .tds с помощью утилиты StripTDS.
TestLeft может работать с обоими форматами. Тем не менее, мы рекомендуем вам создавать внешние файлы .tds для выпускных сборок ваших продуктов. Это уменьшит общий размер вашего приложения. Формат отладочной информации TD32 можно использовать для промежуточных или специальных сборок.
Ниже приведены подробные инструкции по изменению параметров проекта для использования нужного формата отладочной информации.
Примечание: | TestLeft несовместим со средствами, меняющими формат отладочной информации (например, EurekaLog 7). Мы рекомендуем отключать такие инструменты перед компиляцией приложений, которые будут тестироваться с помощью TestLeft. |
Компиляция приложений Delphi с внешней отладочной информацией (файлы TDS)
Файлы .tds создаются на основе исполняемых файлов и библиотек DLL, скомпилированных с включенной отладочной информацией TD32. Чтобы удалить отладочную информацию из модулей и сохранить ее в отдельных файлах .tds, вы можете использовать утилиту StripTDS, поставляемую с TestLeft.
Для создания файлов .tds необходимо сначала скомпилировать протестированное приложение Delphi с отладочной информацией, а затем обработать скомпилированные модули утилитой StripTDS:
Измените настройки проекта для компиляции приложения с отладочной информацией TD32:
Откройте свой проект в Borland Delphi.
Выбрать проект | Параметры из главного меню Delphi. Откроется диалоговое окно «Параметры проекта».
Перейдите на вкладку «Компилятор» и проверьте параметры «Отладочная информация» и «Локальные символы» в группе «Отладка»:
Примечание: Вы можете оставить локальные символы отключенными, но TestLeft UI Spy не будет отображать имена некоторых параметров метода. Перейдите на вкладку Компоновщик и включите параметр Включить отладочную информацию TD32 в группе параметров EXE и DLL:
Нажмите OK, чтобы сохранить изменения и закрыть диалоговое окно «Параметры проекта».
Пересоберите приложение.
Примените утилиту StripTDS к каждому скомпилированному исполняемому файлу и DLL. Например, для обработки всех файлов EXE и DLL в папке C:\MyApp и ее подпапках можно использовать следующую командную строку:
StripTDS. exe -r -w C:\MyApp\*.exe;C:\MyApp\*.dll
Утилита удалит отладочную информацию из исполняемых файлов и сохранит ее в отдельные файлы .tds. Утилита работает только с теми разделами бинарного файла, которые содержат отладочную информацию. Он не изменяет разделы кода и данных, поэтому ваш модуль будет работать так, как он был разработан. Дополнительные сведения об изменениях и аргументах командной строки утилиты StripTDS см. в разделе О StripTDS.
Примечания:
Файлы .tds, содержащие отладочную информацию, должны находиться в тех же папках, что и соответствующие модули тестируемого приложения.
Даже если приложение скомпилировано с включенной опцией Локальные символы, имена некоторых параметров метода могут не отображаться в TestLeft UI Spy. Если вам важен просмотр названий параметров (например, если вы разрабатываете новые тесты), скомпилируйте протестированное приложение Delphi с внутренней отладочной информацией TD32 (см. ниже).
Нет необходимости распространять сгенерированные файлы .tds вместе с вашим приложением.
Компиляция приложений Delphi с внутренней отладочной информацией (TD32)
Выбрать проект | Опции из главного меню.
В появившемся диалоговом окне «Параметры проекта» перейдите на вкладку «Компилятор». Включите параметр «Отладочная информация» в группе «Отладка», чтобы включить отладочную информацию:
.Чтобы увидеть имена параметров метода в панели TestLeft UI Spy, отключите параметр «Оптимизация» и включите параметр «Локальные символы». При использовании Delphi 7.0 или более поздней версии также включите параметр «Использовать отладочные DCU»:
Перейдите на вкладку Компоновщик и включите параметр Включить отладочную информацию TD32 в группе параметров EXE и DLL:
Рекомендуется отключить параметр «Сборка с пакетами среды выполнения» на вкладке «Пакеты»:
Если выбрано это свойство, Delphi создает файлы библиотеки пакетов Borland (. bpl) при компиляции приложения. TestLeft не может получить доступ к отладочной информации в этих файлах и некоторых элементах управления. Если это свойство не выбрано, вся информация включается в один исполняемый файл и доступна для TestLeft.
Если по какой-либо причине вы не можете отключить параметр «Сборка с пакетами среды выполнения», TestLeft может не получить доступ к внутренним методам и свойствам приложения. Выполнив эти шаги, нажмите кнопку «ОК», чтобы сохранить изменения и закрыть диалоговое окно «Параметры проекта».
Перекомпилируйте приложение.
Не забудьте перекомпилировать версию выпуска вашего приложения без отладочной информации TD32, чтобы уменьшить размер приложения.
См. также
Подготовка приложений Delphi к тестированию
Очередь электронной почты с помощью службы EASendMail
В следующих примерах кода delphi показано, как отправлять электронную почту с помощью очереди EASendMail.
Служба очереди SMTP
Служба SMTP EASendMail — это легкая и быстрая служба доставки электронной почты, которая работает с EASendMail. Компонент SMTP, позволяющий вашему приложению отправлять массовые электронные письма в фоновой очереди. служба .
Наряду со способностью выбирать получателей из базы данных в фоновом режиме и отправки электронной почты в указанное время и дату, это облегчает вашу задачу по разработке приложение электронной почты, такое как приложение для рассылки новостей. Мы настоятельно рекомендуем вам использовать Служба EASendMail с вашим ASP.NET/веб-приложением.
Важно
Для работы с сервисом EASendMail загрузите EASendMail и EASendMail Service, а затем установите оба на свой компьютер. Если вы используете службу веб-хостинга и у вас нет разрешения на установку службы на этот сервер, служба EASendMail вам не подходит.
Благодаря функции очереди электронной почты EASendMail вам не нужно кодировать несколько потоков. Служба EASendMail может автоматически отправлять электронную почту в фоновом режиме с несколькими потоками. Вам просто нужно настроить максимальное количество рабочих потоков в EASendMail Service Manager. для повышения производительности. Нажмите здесь, чтобы узнать больше о сервисе EASendMail.
Секции:
- Установка
- Добавить ссылку
- Delphi — отправка электронной почты с использованием службы очередей — пример
- Протокол TLS 1.2
- 32-разрядная/x64 библиотека ActiveX
- Распределение
Установка
EASendMail — это компонент SMTP, поддерживающий все операции протоколов SMTP/ESMTP. (RFC 821, RFC 822, RFC 2554). Прежде чем вы сможете использовать следующие примеры кодов, Вам следует сначала загрузить установщик EASendMail и установить его на свой компьютер.
Добавить ссылку
Чтобы использовать объект EASendMail SMTP ActiveX в вашем проекте Delphi, первым шагом будет «Добавить модульный файл EASendMail в ваш проект». Перейдите по адресу C:\Program Files\EASendMail\Include\delphi
или C:\Program Files (x86)\EASendMail\Include\delphi
папка, найдите EASendMailObjLib_TLB.pas
,
а затем скопируйте этот файл в папку вашего проекта.
Единица Единица 1; интерфейс // включить модуль EASendMailObjLib_TLB в ваш проект Delphi использует Windows, сообщения, SysUtils, варианты, классы, графика, элементы управления, формы, Диалоги, EASendMailObjLib_TLB, StdCtrls;
Вы также можете вручную создать «EASendMailObjLib_TLB.pas» следующим образом:
Delphi 7
Выберите меню ->
Проект
->Библиотека типов импорта
и выберитеEASendMailObj ActiveX Object
, нажмитеCreate Unit
, ссылка на объект EASendMail ActiveX будет добавлена в ваш проект.Делфи ХЕ
Если вы используете Delphi XE для импорта библиотеки типов, выберите меню ->
Component
->Import Component
->Import Type Library
-> и выберитеEASendMailObj ActiveX Object
-> установите флажокGenerate Component Wrapper
-> Create Unit.
После этого вы можете начать использовать его в своем проекте Delphi.
Протокол TLS 1.2
TLS является преемником SSL, все больше и больше SMTP-серверов теперь требуют шифрования TLS 1.2
.
Если ваша операционная система Windows XP/Vista/Windows 7/Windows 2003/2008/2008 R2/2012/2012 R2
, вам необходимо
включите протокол TLS 1.2 в вашей операционной системе следующим образом:
Включите TLS 1.2 в Windows XP/Vista/7/10/Windows 2008/2008 R2/2012
32-разрядная/x64 ActiveX DLL
Отдельные сборки библиотеки времени выполнения для Платформа 32 и x64
Файл | Платформа |
Путь установки\Lib\native\x86\EASendMailObj.dll | 32 бита |
Путь установки\Lib\native\x64\EASendMailObj.dll | 64 бит |
Распределение
Стандартный EXE
Для VB6, C++, Delphi или другого стандартного exe-приложения вы можете распространять EASendMailObj.