Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

bRecChanged: тип Boolean; в настоящее время не используется.

bSeqNumChanged: тип Boolean; в настоящее время не используется.

bDeleteFlag: тип Boolean; указывает на удаленную запись; используется, если тип таблицы поддерживает "мягкое" удаление (только dBASE).

Одна из этих BDE-функций может быть вызвана из вашего приложения для заполнения данной структуры, из которой затем может быть извлечен физический номер записи. Ниже - пример использования для этой цели функции DbiGetRecord.

functionRecNo(ATable: TTable): LongInt;

var

R: RECProps;

rslt: DbiResult;

Error: array[0..255] ofChar;

begin

ATable.UpdateCursorPos;

rslt := DbiGetRecord(ATable.Handle, dbiNoLock, nil, @R);

ifrslt = DBIERR_NONE thenResult := R.iPhyRecNum

else begin

DbiGetErrorString(rslt, Error);

ShowMessage(StrPas(Error));

Result := -1;

end;

end;

Для вызова любой BDE-функции из приложения Delphi, модули-обертки BDE DbiTypes, DbiErrs и DbiProcs должны быть включены в секцию Uses модуля, из которого они будут вызываться (секция Uses здесь не показана). Для того, чтобы сделать функции более транспортабельными, они не имеют прямой ссылки на компонент TTable, но указатель на TTable передается как параметр. Если эта функция используется в модуле, который не ссылается на модули Delphi DB и DBTables, они должны быть добавлены, иначе ссылки на компонент TTable будут недействительными.

Метод TTable UpdateCursorPos вызывается для гарантии синхронизации номера текущей записи в компоненте TTable и связанной с ним таблицы.

В случае ошибок BDE функций, исключительная ситуация ими не генерируется. Вместо этого они возвращают значение BDE-типа DbiResult, указывающее на успешное завершение или ошибку операции. Возвращаемое значение должно быть получено и обработано внешним приложением, с выполнением соответствующих действий. Любой результат, кроме DBIERR_NONE, указывает на неудачное выполнение функции. В этом случае может быть осуществлено дополнительное действие (как в примере выше), где с помощью BDE функции DbiGetErrorString код ошибки переводится в удобночитаемое сообщение. В этом примере возвращаемое в DbiGetRecord значение сохраняется в переменной rslt, а затем для определения успешности вызова функции сравнивается с DBIERR_NONE.

Если вызов DbiGetRecord был успешным, физический номер записи из поля iPhyRecNum структуры pRECProps сохраняется в переменной Result, которая является возвращаемой функцией величиной. Чтобы указать на то, что функция потерпела неудачу (т.е., вызов фунции DbiGetRecord окончился неудачно), вместо номера записи возвращается отрицательная величина. Значение ее может быть произвольным (отрицательная величина совместимого типа) и отдается на усмотрение программисту.

Пакование таблиц dBASE II

Упаковка таблиц dBASE требует вызова BDE функции DbiPackTable. Пример ее использования показан ниже, включая проверку на ошибки. Чтобы воспользоваться функцией DbiPackTable, вызывающий модуль должен в своей секции uses иметь модули-обертки BDE DbiTypes, DbiErrs и DbiProcs.

При неудачном вызове DbiPackTable, сообщение об ошибке не генерится. Для того, чтобы понять как функция сработала, вам необходимо проверить возвращаемое ею значение. В случае успешного выполнения возвращаемое значение равно DBIERR_NONE. Любое другое значение указывает на ошибку, а с помощью него можно определить саму ошибку, ее причину, и наметить действия, необходимые для ее устранения.

Вот сам пример:

procedureTForm1.Button1Click(Sender: TObject);

var

Error: DbiResult;

ErrorMsg: String;

Special: DBIMSG;

begin

table1.Active := False;

try

Table1.Exclusive := True;

Table1.Active := True;

Error := DbiPackTable(Table1.DBHandle, Table1.Handle, nil, szdBASE, True);

Table1.Active := False;

Table1.Exclusive := False;

finally

Table1.Active := True;

end;

caseError of

DBIERR_NONE: ErrorMsg := 'Успешно';

DBIERR_INVALIDPARAM: ErrorMsg := 'Указанное имя таблицы или указатель на имя таблицы ' +'равен NULL';

DBIERR_INVALIDHNDL: ErrorMsg := 'Указанный дескриптор базы данных или курсора ' +'неверен или равен NULL';

DBIERR_NOSUCHTABLE: ErrorMsg := 'Таблица с таким именем не существует';

DBIERR_UNKNOWNTBLTYPE: ErrorMsg := 'Неизвестный тип таблицы';

DBIERR_NEEDEXCLACCESS: ErrorMsg := 'Таблица открыта не в эксклюзивном режиме';

else

DbiGetErrorString(Error, Special);

ErrorMsg := '[' + IntToStr(Error) + ']: ' + Special;

end;

MessageDlg(ErrorMsg, mtWarning, [mbOk], 0);

end;

Пакование таблиц dBASE III

Для упаковки таблицы dBASE, открытой с помощью TTable, воспользуйтесь функцией BDE DbiPackTable. Для этого достаточно сделать две операции:

1. Добавьте в секцию uses следующие модули:

{ Для Delphi 1.0: } DBITYPES, DBIPROCS и DBIERRS;

{ Для Delphi 2.0: } BDE;

2. Затем вызовите BDE функцию DbiPackTable следующим образом:

Check(DbiPackTable(Table1.DbHandle, Table1.Handle, Nil, szDBASE, TRUE));

Примечания:

• Таблица должна быть открыта в эксклюзивном режиме.

• При вызове функций API BDE используйте процедуру Check. Check в случае ошибки при вызове BDE генерирует исключительную ситуацию.

Пакование таблиц dBASE IV

Nomadicсоветует:

Для dBase:

usesDbiProcs;

withtable do

begin

OldState := Active;

Close;

Exclusive := True;

Open;

DbiPackTable(DBHandle, Handle, nil, nil, True);

{^ здесь можно добавить check()}

Close;

Exclusive := False;

Active := OldState;

{ при желании можно сохранить закладку }

end;

Pavel Kulchenko

(2:465/66)

Пример для Paradox:

UsesBDE; // for d3, для d2 не помню (что-то типа dbiprocs и еще что-то)

// для пpимеpа

tLog : TTable; // таблица, юзающая d:\db\log.db

var

TblDesc: CRTblDesc;

rslt: DBIResult;

Dir: String; //имеется в виду huge string т.е. {$h+}

hDb: hDbiDb;

begin

tLog.Active := False; //деактивиpуем TTable

SetLength(Dir, dbiMaxNameLen + 1);

DbiGetDirectory(tLog.DBHandle, False, PChar(Dir));

SetLength(Dir, StrLen(PChar(Dir)));

DbiOpenDatabase( nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil, hDb);

DbiSetDirectory(hDb, PChar(Dir));

FillChar(TblDesc, sizeof(CRTblDesc), 0);

StrPCopy(TblDesc.szTblName, 'd:\db\log.db');

// здесь должно быть полное имя файла

//котоpое можно: а) ввести pуками;

//б) вытащить из пpопеpтей таблицы;

//в) вытащить из алиаса;

//г) см. FAQ

StrCopy(TblDesc.szTblType, szParadox);

//BTW тут может и szDBase стоять

TblDesc.bPack := TRUE;

DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, false);

DbiCloseDatabase(hDb);

end;

// можно еще чеки ввести, но облом :-)

Показ удаленных записей в таблице dBASE

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x