Автор: delphi | 14.12.2007 в 9:21 | Рубрики: Базы данных

Сообщение об ошибке: В файловой системе win95 существует ошибка, “микширующая” блокировку записи Paradox и механизм обновления. В хост-файлах Paradox в Windows 95 для работы нескольких пользователей измените следующие значения:

Select Control Panel
System (icon)
Performance (Tab)
File System (Button)
Troubleshooting (Tab)
“Disable New File Sharing and Locking Semantics” (щелкните) (нажмите OK)
(Выключить общий доступ к новым файлам и семантику блокировки)

Автор: delphi | в 9:21 | Рубрики: Базы данных

Что за магия при записи в поле Paradox Byte? По этому поводу в документации ничего не сказано.

Есть 2 пути получить доступ к данным в TBytesField.

Просто вызовите метод GetData, передавая ему указатель на буфер, где сам буфер должен иметь размер, достаточный для хранения данных:

procedure SetCheckBoxStates;
var
CBStates: array[1..13] of Byte;
begin
CBStateField.GetData(CBStates);
{ Здесь обрабатываем данные… }
end;

Для записи значений вы должны использовать SetData.

Используйте свойство Value, возвращающее вариантный массив байт (variant array of bytes):

procedure SetCheckBoxStates;
var
CBStates: Variant;
begin
CBStates := CBStateField.Value;
{ Здесь обрабатываем данные… }
end;

Первый метод, вероятно, для вас будет легче, поскольку вы сразу докапываетесь до уровня байт. Запись данных также получится сложнее, поскольку вам нужно будет работать с variant-методами типа VarArrayCreate и др.

Где-нибудь при закрытии главной формы выполните нижеследующие куски кода:

Для Delphi3 (при открытой таблице):

Table.FlushBuffers;

Для прочих:

Table.Open;
Check(dbiSaveChanges(Table.Handle));
Table.Close;

Чтобы сбросить кэш, можно еще после этого сделать:

asm
mov ah, $0D
int $21
end;

Автор: delphi | в 9:21 | Рубрики: Базы данных

Данная общая информация могла бы быть полезной при вычислении максимального размера записи для установки размера каждого блока.

Требования к предельным размерам типов полей таблицы Paradox

Данный список указывает количество байт каждого типа поля таблицы Paradox, занимаемое в структуре записи. Имейте в виду, что указанный размер занимает каждое поля в самом файле .DB, не во вспомогательных файлах типа .MB.
Читать полностью…

Автор: delphi | в 9:21 | Рубрики: Базы данных

Я пришел к тебе с дискетой, рассказать что сеть упала.

Может мне кто-нибудь помочь? Я получаю следующую ошибку приложения….Not initialized for accessing network files (не инициализировано для доступа к сетевым файлам).

Программа Borland BDE Install НЕ включает в себя автоматически драйвер для работы в сети для таблиц Paradox, если целевой компьютер подключен к сети. Ваш пользователь получит сообщение об ошибке, если путь никем не установлен. Программы третьих фирм, устанавливающие BDE, поступают точно так же (я использую WISE). Настройка сетевого каталога возможна программным путем из самой программы, или с помощью пользователя и утилиты BDEconfig.

При запуске приложения я разворачиваю предусмотренную Borland DLL “netdir.dll” (58K), загруженную из форума PdoxWin, получаю доступ к idapi.cfg и считываю значение сетевого каталога (netdir). Следующий код проверяет был ли установлен сетевой каталог, и, если не был, то он временно устанавливается для текущего сеанса пользователя.

{объявляем DLL функцию}
function getCFGNetDir: pchar; far; external ‘netdir’ index 4;

{проверяем и при необходимости восстанавливаем сетевой каталог}
procedure TmySplashForm.FormCreate(Sender: TObject);
var
theNetDir: pchar;
theChar: char;
begin
theChar := ‘:’
theNetDir := getCFGNetDir;
if (strscan(theNetDir, theChar) = nil) then
session.netfiledir := ‘C:\’;
end;