Является одним из самых успешных продуктов в линейке интегрированной среды обработки от компании Borland (начавшейся продуктом Borland Delphi и последним на данный момент 10.1 Berlin). Программа предназначена в первую очередь для разработки приложений в архитектуре клиент-сервер. Основным производимыми Delphi 7 модулями являются.exe и.dll. Среда визуального проектирования программы берёт на себя множество рутинных функций по подготовке приложения. Этим она ускоряет время создания приложения и повышает его качество. Во многом схожими параметрами обладает продукт Borland C++ Builder, однако вместо паскаля в нём используется язык C++.
Преимущества и недостатки Delphi
Время разработки приложений значительно ниже, чем при работе в аналогичных программах;
+ высокая производительность при компактном объёме;
+ созданное приложение обладает минимальными требованиями к ресурсам ПК;
+ возможность наращивания потенциала программы за счёт встраиваемых модулей;
+ а также возможность создания таких модулей в самой среде Delphi;
+ стройная иерархия объектов;
- большой размер некоторых итоговых приложений и программ;
- невозможность использования других стандартных UI;
- отсутствие гибкости и оригинальности: по любой программе, выполненной в Delphi, можно понять, что она выполнена в Delphi.
Основные возможности
- создание приложений и прикладных программ на языке Delphi;
- запуск и отладка программ на языке Delphi;
- создание кроссплатформенных отчетов Rave Reports;
- работа в среде моделирования ModelMaker;
- разработка WEB-приложений;
- редактирование, отладка и запуск WEB-приложений;
- визуализация, интеграция и реинжиниринг;
- встроенные мануалы по базовым функциям;
- возможность использования готовых шаблонов проектирования;
- использования модулей.exe и.dll.
Так что теперь у вас есть проблема, если вы пишете библиотеку, которая будет использоваться как кодом старой школы, написанным с wchar_t , определённым как псевдоним для unsigned short , так и кодом новой школы, написанным с wchar_t как отдельным внутренним типом. Какой тип данных вам нужно использовать для строковых параметров?
Это перевод The sad history of Unicode printf-style format specifiers in Visual C++ .
Windows реализовала Unicode раньше, чем большинство других операционных систем. В результате решения Windows для многих проблем отличаются от решений, принятых теми, кто подождал, когда пыль осядет¹. Самым ярким примером этого является использование Windows UCS-2 в качестве кодировки Unicode. Тогда это была кодировка, рекомендованная консорциумом Unicode, потому что Unicode 1.0 поддерживал только 65"536 символов². Консорциум Unicode передумал пять лет спустя, но к тому времени было уже слишком поздно для Windows, которая уже выпустила Win32s, Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 и Windows 95 - все из которых использовали UCS-2³.
Но сегодня мы поговорим о строках формата в стиле printf .
Это перевод If FlushInstructionCache doesn’t do anything, why do you have to call it, revisited .
Предполагается, что вы будете вызывать функцию FlushInstructionCache , когда вы генерируете или модифицируете исполняемый код в run-time - чтобы процессор при выполнении вашего сгенерированного/модифицированного кода читал бы написанные вами инструкции, а не старые инструкции, которые могут остаться в кеше команд процессора.
Ранее мы узнали, что . Это потому, что простого вызова функции было достаточно, чтобы очистить кэш команд.
Но в Windows NT функция FlushInstructionCache выполняет реальную работу, поскольку ей необходимо уведомить все остальные процессоры о необходимости очищать их кэши.
Однако если вы посмотрите на Windows 10, то вы обнаружите, что функция FlushInstructionCache выглядит как версия для Windows 95: она ничего не делает .
В чём тут дело?
Чтобы вам не тратить половину жизни на разобраться - в этой статье я принесу всё на блюдечке.
Темы этой статьи в разной степени уже не раз затрагивались в этом блоге, но в этой статье они собраны в кучу, приведены обоснования. Короче, ссылкой на эту статью можно кидаться в тех, кто разрабатывает DLL.
Важное примечание : статью нужно читать последовательно . Примеры кода приводятся только как примеры , на каждом шаге (пункте) статьи код примеров добавляется новыми подробностями. Например, в самом начале статьи нет обработки ошибок, указываются "классические" способы (типа, использования GetLastError , соглашения sdtcall и т.д.), которые по ходу статьи заменяются на более адекватные. Сделано так по той причине, чтобы "новые" ("необычные") конструкции не вызывали вопросов. Иначе при пришлось бы к каждому примеру вставлять примечание вида: "вот это обсуждается в том пункте ниже, а вот то - в этом вот". В любом случае в конце статьи есть ссылка на уже готовый код, написанный с учётом всего сказанного в статье. Можете просто его брать и использовать. А статья объясняет зачем и почему. Если вам не интересно "зачем и почему" - листайте в конец к заключению и ссылке на скачивание примера.
2) Отключаем антивирус и распаковываем архив.
Отключить антивирус очень Важно!
Если не отключить, не сможете активировать программу.
На самом деле вирусов в наших файлах нет! Это всё происки капиталистов!
3) Если в папке "Activator" нет этих файлов:
Значит их скушал хитрый антивирусник ещё при скачивании архива.
3.1) Копируем папку с программами на диск С или любое другое место, где она будет жить постоянно. После активации перемещать папки будет уже нельзя. Или можно, но активировать придётся заново))).
3.2) Запускаем программу.
4) Ждём пока программа запустится, а запускается она около минуты, видимо переживает, что попала к Русским и её будут эксплуатировать на морозе.
Не обращайте внимания на надпись "2013 Release 3" - это просто заставка от старой версии.
4.1) Жмём OK, стрелочки "Вперёд", пока не появится окно регистрации и запускаем генератор ключей, если этого файла нет, смотрите пункт 3 данной инструкции.
5) Вводим в окне генератора и программы Delphi SN 100251, ставим в генераторе правильные галочки и нажимаем KEY , копируем сгенерированный HWKEY в окно регистрации и нажимаем стрелочку "Верёд".
6) Нажимаем кнопку
Сохраняем fileactivation на рабочий стол
Программа выдаст надпись:
Ничего не закрываем, все окна раздвигаем по бокам рабочего стола и запускаем активатор. Внимание! Если Вы забыли выключить антивирусник, этого файла не будет в папке, либо он не запустится. Чтобы он появился, нужно заново вытащить его из архива при выключенном антивирусе. Либо смотрите пункт 3 данной инструкции.
7) Активируем файл "fileactivation", ранее сохранённый на рабочий стол.
8) После успешной активации, закрываем активатор и даём программе уже активированный файл.
То есть! Снова нажимаем кнопку "START" и "нет".
9) Выбираем тот же самый файл, который был сохранён и активирован ранее, программа запускается.
10) Программа сделает последнюю попытку отказаться работать, предложив Вам обновиться до версии 2013.3.3!
Не соглашайтесь! Это подстава!
11) Активируем лицензию Turbo Charger и Diesel Max
Для этого выбираем в меню HELP , Licence.
Откроется такое окно, нажимаем "Upgrade Licence"
12) Откроется окно:
Выбираем "Upgrade licence to Diesel Max" и OK.
Если Вы не открывали генератор ключей ранее или закрыли его, то он находится в этой папке:
Генерируем ключ для Diesel Max , копируем в окно и нажимаем OK
13) Аналогично активируем лицензию Turbo Charger
14) Всё активировано. Теперь выбираем в настройках нужный язык.
В верхнем меню выбираем "Settings", затем выбираем "Language".
Нажимаем OK и перезапускаем программу.
15) Не забудьте сделать для программы ярлык на рабочем столе:
15.1) Созданный ярлык переименуйте в DELPHI CARS 2014.2.2.
16) Заходим в "Настройки оборудования",
подключаем сканер к авто и компьютеру по USB кабелю.
Проходим ТЕСТ и Обновляем прошивку клавишей "Обновить"
17) Аналогично активируем и настраиваем программу для грузовых авто, меняются только ключи, перепрошивать сканер уже не нужно.
Ошибка "Unknown error during init
Для WIN7 x64. Если возникает ошибка при установке программ Autocom/Delphi "unknown error during init":
1) Удаляем установленную программу (uninslall).
2) Удаляем папку C:\Users\(ИМЯ ПОЛЬЗОВАТЕЛЯ)\AppData\Roaming\Autocom
3) Удаляем папку C:\ProgramData\Autocom
4) Чистим реестр программой CCleaner.
5) Устанавливаем SQL Server X32
6) Запускаем установку снова. Вуаля! Всё работает!
Цель урока: Подготовить среду разработки Borland Delphi 7 для наших дальнейших экспериментов .
Почему выбрана именно среда Borland Delphi 7 ?
Borland Delphi 7
- это одна из стабильных и проверенных временем версий языка Delphi
(получить можно ). До сих пор в ней ведутся разработки, как крупных проектов, так и мелких. И по сей день она успешно справляется с задачами. Многие программы, разработанные в Borland Delphi 7
, благополучно работают и на операционных системах Windows 7 (x84, x64).
Есть небольшая проблема в новых версиях ОС Windows
с отображением справки Delphi
, но пара манипуляций позволяет это исправить. Кстати, по поводу справки Delphi
, она очень подробная и понятная (как правило, это редкость в языках программирования), хотя и англоязычная. В далеких "нулевых", когда я только начинал знакомиться с данной средой (точнее первое знакомство было с Borland Delphi 4, 5 и 6),
справка была спасателем и путеводителем. На то время, интернет еще был не настолько развит и наполнен форумами, статьями как сейчас (да и вообще, доступ к инету это была мечта:)), а книги дороги и по существу в них информации минимум, справка была вещь не заменимая. Так же, IDE среда разработки Borland Delphi 7,
на мой взгляд, для начинающих (да и вообще для разработчиков) интуитивно более понятна и проста в освоении, чем более младшие версии языка (в последующих версиях очень запутали и усложнили интерфейс). Но, есть один приятный момент, большинство приложений написанных в Delphi 7
, легко открываются и компилируются в более поздних версиях языка (только с используемыми сторонними компонентами могут возникнуть некоторые проблемы).
Что-то увлекся я:)
Итак, приступим!
После того, как Вы вставили диск с дистрибутивом Delphi 7 произойдет автозапуск и Вы увидите меню с выбором приложений для установки (если запуск не произошел, то зайдите на диск и запустите install . exe) . Нас пока интересует только пункт «Delphi 7 ». Щелкаем по нему.
После подготовки к установке появится окно приветствия. Жмем «Next>»
В этом окне нас просят ввести серийный номер и ключ авторизации. Для прохождения данного шага введите ключи указанные на диске или поищите в содержимом диска.
После того, как Вы ввели регистрационную информацию, будет предложено ознакомится с лицензионным соглашением и дать свое согласие. Как только Вы «прочтете» соглашение, необходимо отметить «I accept the terms in the license agreement». Жмем «Next>»
На следующем шаге предложен выбор типа установки: Typical (полный), Compact (установка только необходимых компонентов языка), Custom (ручной). Выбираем тип «Typical». Жмем «Next>»
Возможно, выскочит следующее сообщение. Жмем «Нет».
На данном шаге нам будет предложено включить или отключить установку VisiBroker/Corba. В рамках обучения данная поддержка нам не пригодится, так что отключаем. О том, что это такое можете почитать в Wiki . Жмем «Next>»
На данном этапе, будет предложено выбрать, какой офис будет поддерживаться по умолчанию. Ставим Office XP. Жмем «Next>»
Здесь нам предлагают установить InterBase Client. В ближайшей перспективе он нам не нужен. Снимаем галочку. О том, что это такое, читаем . Жмем «Next>».
На этом этапе, нам предложено указать пути установки. Не будем заморачиваться, да и путаница в дальнейшем нам не нужна. Оставляем все по умолчанию. Жмем «Next>»
Итак, наконец-то процесс установки пошел. Сидим, пьем кофе, ждем окончания процесса. :)
После успешного завершения установки мы получим следующее окно.
Все. Поздравляю! Установка завершена. Жмем «Finish» и приступаем к работе (Пуск->Программы->Borland Delphi 7-> Delphi 7). Возможно, потребуется перезагрузка системы.
П.С.: Данная версия отлично работает на Windows 7 x86 и Windows 7 x64. Одно НО!. В Windows 7 нет поддержки старой справки WinHelp32 из-за чего нет возможности пользоваться справкой Delphi. А без нее как без рук:) . Но не переживайте, получите дополнение Windows 6.1- KB 917607 на официальном сайте Microsoft . Устанавливаете и справка работает:). Все!