Выбрать главу

Я слышал, что у 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, сетевых и клиент-серверных инструментов".