На прошлой неделе мне сказали, что 32-х битное консольное приложение, написанное на Delphi 11, не запускается под Windows 2003. Я не поверил. Поставил на виртуалку Delphi 11.3, сделал тестовое 32-х битное консольное приложение с одной строкой кода "Writeln('It works!')", попросил админа поднять древнюю виртуалку с Windows Server 2003, запустил на ней свое тестовое приложение и получил ошибку "temp.exe is not a valid Win32 application":
Как так? Ведь разработка десктопных приложений – это же конек Delphi!
Язык программирования самого высокого уровня содержит всего несколько команд для управления программистами
Показаны сообщения с ярлыком WinAPI. Показать все сообщения
Показаны сообщения с ярлыком WinAPI. Показать все сообщения
27 ноября 2023
20 сентября 2023
Delphi 12. Заголовки Windows API сгенерированные из Win32Metadata
В январе 2021 года компания Microsoft представила на GitHub свой новый проект Win32Metadata. Его цель – создать полное описание Windows API в виде файла метаданных Windows.Win32.winmd, который позволяют автоматически переводить заголовки его модулей на любые языки программирования. В рамках проекта Microsoft реализовала инструмент для перевода заголовков Win32 API на C# и Rust, а сообщество разработчиков реализовало его для Beef, D, Dart, Python и Zig. Вот теперь в Embarcadero разработали подобный конвертор для перевода заголовков Win32 API на Delphi.
28 июля 2021
Как определить реальную версию Windows?
WinAPI – это огромный монстр с неисчислимым количеством функций, которые запросто могут дублировать функционал друг друга. Это позволяет решить одну задачу различными способами. Так и для определения версии установленной на компьютере операционной системы существует несколько путей. Давайте посмотрим на сколько они эффективны.
06 июля 2021
Получение SHA1-хеша цифрового сертификата
Одним из вариантов сертификата при программном добавлении цифровой подписи в PDF документ может быть идентифицированный по SHA1-хешу сертификат из хранилища сертификатов Windows. Получение без использования сторонних библиотек списка персональных сертификатов из хранилища я рассмотрел в статье Список персональных сертификатов. Но структура CERT_CONTEXT (record TCertificate в Delphi) для хранения информации о сертификате не содержит нужный нам SHA1-хеш. Давайте посмотрим, как достать его из сертификата.
29 июня 2021
23 декабря 2020
Работа с ресурсами приложения
Ресурсы приложения Windows – это данные, которые встроены внутрь EXE, DLL, CPL и MUI файлов. Общеизвестным примером такого ресурса является иконка приложения. Windows API предопределяет большое количество типов ресурсов приложений. Кроме них приложения могут определять свои собственные типы ресурсов. Хотя, как я понимаю, они все будут равнозначны RCDATA. Давайте добавим приложению как ресурсы логотип и пользовательское соглашение, а при его старте загрузим их на форму.
17 июня 2020
Изменение разрешения изображения. Ускорение
Приведенный в статье "Изменение разрешения изображения" алгоритм изменения разрешения изображения рабочий, только, как оказалось, очень медленный. Я сразу подумал, что это из-за использования мной режима масштабирования изображения HALFTONE. Но, даже при использовании режима COLORONCOLOR, моя процедура в 3-4 раза медленнее стандартного метода Canvas.StretchDraw!
09 июня 2020
Изменение разрешения изображения
Предположим, что у вас возникла нужда изменить разрешение изображения. Например, чтобы сделать его миниатюру (thumbnail) для предварительного просмотра. Для этого можно воспользоваться какой-нибудь библиотекой для работы с графикой. Можно реализовать алгоритм самому. Но можно обойтись и подручными средствами, то есть функциями Delphi и WinAPI.
04 марта 2020
Избавляемся от "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом"
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом... Но это не точно... Как показала практика, для программы на Delphi это действительно не точно.
При открытии файла в режиме "только для чтения" в параметре определяющем режим доступа к файлу обычно передают комбинацию "fmOpenRead or fmShareDenyNone". Но оказалось, что это избавляет только от части ошибок "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом" или "The process cannot access the file because it is being used by another process".
При открытии файла в режиме "только для чтения" в параметре определяющем режим доступа к файлу обычно передают комбинацию "fmOpenRead or fmShareDenyNone". Но оказалось, что это избавляет только от части ошибок "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом" или "The process cannot access the file because it is being used by another process".
Подписаться на:
Сообщения (Atom)