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

Добавьте SHARE.EXE в AUTOEXEC.BAT или добавьте DEVICE=VSHARE.386 в раздел [386Enh] файла SYSTEM.INI и перезагрузитесь.

2. Ошибка при загрузке языкового драйвера.

У меня есть Quattro Pro 6.0 и IDAPI в сети. После установки Delphi и нового IDAPI поверх сетевого IDAPI при запуске Quattro Pro с другой машины я получаю ошибку 'Could not load Language Driver'.

Добавьте раздел [Borland Language Drivers] в WIN.INI файл для указания каталога языкового драйвера. Пример:

[Borland Language Drivers]

LDPATH=C:\IDAPI\LANGDRV

3. Что значит ошибка IDAPI $2C08?

'Cannot load IDAPI01.DLL'. Убедитесь, что в файле WIN.INI правильно прописаны пути:

[IDAPI]

DLLPATH=C:\IDAPI

CONFIGFILE01=C:\IDAPI\IDAPI.CFG

4. Отличается ли локальный InterBase, встроенный в Delphi 1.0, от InterBase для других платформ, в частности, от InterBase для Windows NT?

16-Разрядный Local InterBase не поддерживает:

• функции, определяемые пользователем.

• BLOB фильтры

• сигнализатор событий (event alerters)

• запись через журнал (Write Ahead Log (WAL)

• тип данных массив (Array Datatype)

• 'отключение' и 'включение' базы данных (database shutdown or restart)

• ведение теневой базы данных (database shadowing)

Все остальные функции поддерживаются, но структура хранения базы на диске не совпадает.

Можно ли поставить локальный InterBase на файл-сервере и, таким образом, получить доступ к нему из многих приложений?

Работать не будет. И не пытайтесь. Для этой цели вам нужен нормальный многопользовательский InterBase.

5. Что насчет VBX-компонентов для работы с данными?

Delphi поддерживает только VBX 1.0. Это значит что VBX для работы с данными 'не работает' с Delphi. В общем случае, все, что работает с Microsoft Visual C++, должно работать в Delphi. Кроме того, некоторые VBX достаточно хорошо написаны, так что их можно использовать в Delphi и без обращения к возможностям работы с данными.

Object Pascal и Windows API

1. Можно ли использовать OWL в Delphi?

Можно, если уже существуют свои разработки с использованием OWL. Однако следует обратить внимание, не используются ли слова class, try, except и ряда других — в Delphi они являются зарезервированными. Если же опыта использования OWL не было, то вряд ли имеет смысл использование этой библиотеки — в Delphi существуют свои, более удобные средства для работы с Windows.

Компиляция приложений, написанных на BP7 с использованием OWL.

Компилятор Delphi способен компилировать приложения, написанные на OWL Borland Pascal 7.0. Для компиляции таких приложений в среде Delphi необходимо сделать следующее:

1. Откройте главный файл приложения пунктом меню File|Open Project

2. Добавьте в список используемых модулей uses модуль Messages в тех файлах, где использовался модуль WinTypes. Модуль Messages должен быть указан ранее модуля OWindows, ODialogs или любого другого OWL-модуля.

3. При помощи пункта меню Options|Project Dialog добавьте путь x:\DELPHI\SOURCE\RTL70 к пути поиска модулей данного проекта. Этот каталог должен содержать файлы OWL, измененные для компиляции в Delphi.

Если Вы забыли указать использование модуля Messages, то Вы при компиляции получите сообщение 'Unknown identifier'. Указание Messages после модуля OWindows вызовет сообщение 'Header does not match previous definition'.

Идентификатор Result теперь используется особым образом внутри тела функций, поэтому их внимательно посмотрите, где этот идентификатор может встречаться. Недопустимо использование перекрывающихся диапазонов в операторе case.

Изменилась реализация StrDispose. Если Вы распределяете память для строки при помощи GetMem, то освобождение этой области памяти при помощи StrDispose вызовет ошибку выполнения 'Runtime error 203'. Для распределения памяти для строк следует использовать функции StrAlloc или StrNew. Объекты OWL не ориентированы на обработку исключительных ситуаций, т.е. при возникновении таких ситуаций не происходит отката инициализации объектов. Мы не рекомендуем использование исключения в приложениях с OWL.

Компилятор теперь производит поиск модулей, ресурсов и OBJ файлов по пути, указываемому в каталогах OPTIONS|Project. Путь 'EXE and TPU directory' больше не поддерживается. EXE-файлы могут создаваться в 'Output directory', а файлы DCU всегда создаются в том каталоге, где находятся соответствующие файлы PAS. Новые модули WinTypes и Messages могут быть скомпилированы BP7. Для этого не требуется включения дополнительных директив $IFDEF (зато там есть $IFDEF WIN32;).

2. Как можно зааллокировать блоки памяти больше, чем 64 Кбайт?

Используйте GlobalAlloc и GlobalLock из модуля WinProcs.

3. GPF в ToolHelp.DLL в Win-OS/2 2.1.

Поставьте FixPack, или сделайте Upgrade на OS/2 Warp 3 FullPack.

4. Как получить из Clipboard текст большого размера?

Да, стандартный метод TClipboard.AsText ограничивает текст размером строки - 255 байт. Для получения текста длиной более 255 байт можно использовать, например следующую процедуру:

procedure GetLargeText: PChar

var

  Buffer: PChar;

  MyHandle: THandle;

  TextLength : Integer;

begin

  MyHandle := Clipboard.GetAsHandle(CF_TEXT);

  Buffer := GlobalLock(MyHandle);

  try

    Result := nil;

    if Buffer <> nil then

    begin

    { теперь у нас данные типа PChar -> мы можем работать

      с ними как с обычной Null-terminated строкой }

      TextLength := StrLen(Buffer);

      GetMem(Result, TextLength+1);

      StrCopy(Buffer, Result);

    end;

  finally

    GlobalUnlock(MyHandle);

  end;

end;

5. Проблемы Delphi с WinG.