Я слышал, что у Delphi проблемы с WinG, однако кто-то их решил?
Да, Майк Скотт (Mike Scott, 100140.2420@compuserve.com) даже написал коммерческий вариант VCL-компонентов, использующих WinG для Delphi:
WinG Sprite Kit.
Набор компонентов, осуществляющих доступ к WinG из Delphi. Включает компоненты TWinGCanvas для рисования TWinGDC и TWinGBitmap, TWinGSurface, которые можно поместить на форму и спрайтовый компонент, который можно помещать на них.
$99 EEP
Существует статья по использованию WinG в Borland Pascal — #5 Pascal Magazine. Обзор VCL WinG появится в новом Delphi Magazine. Отошлите письмо с вашим почтовым адресом на 70630.717@compuserve.com для получения бесплатной копии этих журналов (наверняка из России это не сработает.
Компоненты и VCL
1. Каковы ограничения на стандартные компоненты Delphi?
Все компоненты, использующие TList для сохранения информации, имеют верхний предел 16368 единиц. Hапример, TTabControl может содержать до 16368 закладок и Delphi Component Palette может содержать до 16368 страниц.
Многие из стандартных компонент Delphi являются надстройкой над стандартными управляющими элементами Windows. Windows 3.1 налагает свои собственные ограничения на эти компоненты. Hапример: TComboBox или TListbox могут содержать до 5440 единиц, а TMemo или TEdit (и соответствующие компоненты) — до 32k текста.
Ресурсы Windows 3.1 ограничивают компонент TNotebook 570 страницами. (Трудно получить более 500 хендлов /handles/ окон в любом приложении Windows). Превышение этих границ вызывает ошибку или послужит причиной странного поведения Windows.
2. Предел буфера редактирования в 32K для TMemo.
Почему в документации написано, что TMemo может редактировать тексты до 256К, а на деле получается не более 32К?
В документации ошибка. 32К — это ограничение Windows. В Windows все стандартные редакторы используют общий буфер в 32К, компонент TMemo использует другую технику, позволяющую каждому TMemo иметь буфер в 32К. В Windows 95 эта проблема решена.
3. Почему компонент TGauge так медленно работает (медленнее, чем VBX BGauge)?
Компонент TGauge — просто пример, и ничего более. В нем отсутствует даже намек на оптимизацию перерисовок. Если вы посмотрите на код процедуры SetProgress, то увидите
FCurValue := Value;
Refresh;
Это означает, что как только положение изменилось, весь компонент будет перерисован. Тем не менее, есть пути для того, чтобы сделать компонент более быстрым:
1. Не присваивать Progress каждый раз (напр. 3000 раз), т.е. делать обновление менее часто
2. Проверять, действительно ли позиция на экране изменится. Например, в SetProgress сделать следующее:
if Abs(FCurValue-FLastDrawn) >= FDisplayDelta then
begin
Refresh;
FastDrawn := FCurValue;
end;
где FDisplayDelta что-то вроде (FMaxValue-FMinValue) div Width (идеально было-бы учитывать реальный размер экрана.
3. Обновлять только часть индикатора, которая действительно меняется. Процедура Refresh стирает и перерисовывает весь компонент. Можно сделать вызов InvalidateRect (Windows API) и вызвать Update.
4. Если вы сделали как в пункте 3, вы дополнительно можете оптимизировать процедуру перерисовки, чтобы не перерисовывать неизменяющийся участок.
Разное
1. Распространение приложений Delphi, использующих Local InterBase.
Для распространения таких приложений, в соответствии с лицензионным соглашением вы должны перенести следующие файлы:
Главные модули (X:\IBLOCAL\BIN)
DSQL.DLL
FILEIO.DLL
GDS.DLL
GBAK.DLL
INTL.DLL
IUTLS.DLL
JRD.DLL
REMOTE.DLL
STACK.DLL
Сообщения, лицензионные файлы и т.п. (X:\IBLOCAL)
INTERBASE.MSG
ISC4.GDB
ISC_LIC.DAT
Утилиты (если они необходимы)
WISQL.EXE
WISQL.HLP
SQLREF.HLP
IBMGR.EXE
SVRMGR.HLP
COMDIAG.EXE
COMDIAG.INI
COMDIAG.HLP
BLINT04.HLP
После копирования этих файлов необходимо проделать следующие операции:
1. Добавить в AUTOEXEC.BAT в команду PATH X:\IBLOCAL\BIN
2. Там же сделать SET INTERBASE=X:\IBLOCAL
3. В WIN.INI создать секцию
[Interbase]
RootDirectory=X:\IBLOCAL
Естественно, если путь к локальному InterBase отличается от IBLOCAL, то вы должны изменить его на нужный.
Для распространения BDE вы должны передать пользователю две инсталляционные дискеты с редистрибутивным BDE (на CD-ROM каталог REDIST\BDE).
Для установки BDE вручную скопируйте содержимое каталога IDAPI (с подкаталогом языковых драйверов), и создайте в WIN.INI следующие секции:
[IDAPI]
DLLPATH=X:\IDAPI
CONFIGFILE01=X:\IDAPI\IDAPI.CFG
[Borland Language Drivers]
LDPath=X:\IDAPI\LANGDRV
После этого ненужные файлы (неиспользуемых языковых драйверов, поддержку ODBC…) можно удалить с диска, или временно перенести, убедиться в работоспособности приложения, и удалить.
Возникает неясность — как добавить драйвер INTRBASE в IDAPI.CFG? Получается, что его необходимо переносить, и затем настраивать псевдонимы на новые каталоги. Иначе драйвер локального InterBase не попадет в IDAPI.CFG.ы
Вопросы по Delphi 2.0
Что нового в Delphi 2.0 по сравнения с Delphi 1.0?
Выпущенная в феврале 1995 года версия Delphi 1.0 стала первым инструментом для Windows, комбинирующим оптимизирующий компилятор, механизмы визуальной разработки Two-Way-Tools и масштабируемую архитектуру обработки баз данных. Сегодня сотни компаний по всему миру заявляют о многократной окупаемости их инвестиций в информационые системы, построенные с применением Delphi в качестве основного инструмента. Borland Delphi 2.0 полностью поддерживает все особенности новых операционных систем Windows 95 и Windows NT. Новый 32-разрядный оптимизирующий компилятор позволяет увеличить производительность разрабатываемых систем на 300-400 процентов при том, что генерируемый в результате код выполняется в 15-50 раз быстрее, чем в системах на базе P-код интерпретаторов. Новые объектно-ориентированные средства, предназначенные для разработки в архитектуре клиент-сервер, включают централизованное хранилище объектов — Object Repository и механизм визуального наследования форм — Visual Form Inheritance. "Всего за один год Delphi был принят на вооружение заказчиками в силу уникальных возможностей этого продукта, сочетающего высокопроизводительную технологию компиляции с единой средой визуального программирования", — говорит вице-президент Borland по маркетингу (Product Marketing and Management) Ричард Горман (Richard Gorman). "С выпуском новых версий мы расширяем рынок Delphi на всем спектре desktop, сетевых и клиент-серверных инструментов".