Попали в одну камеру разбойник и хакер. Разбойник:
- Я вот сижу за ограбление магазина... А ты за что сидишь? Хакер:
- Ограбил банк на 7 миллионов долларов... Разбойник:
- Да ты че... ни фига себе.. как же ты унес их из банка - денег-то офигенно много? Хакер рассказывает в общих чертах о компьютерах, сетях, взломах и т. д. Разбойник:
- Ну ни фига себе, а как же ты попался? Хакер:
- Брандмауэр засек и сработала защита.. Разбойник:
- Ах ты... Брандмауэр, твою мать... Всегда знал, что евреев опасаться надо...
function FindRecordNumber (aDataSet : TDataSet): longint;
var
cP: CurProps;
rP: RECProps;
DBRes: DBiResult;
begin{Return 0 if dataset is not Paradox or dBase}
Result := 0;
with aDataset dobeginif state = dsInactive then exit;
{we need to make this call to grab the cursor's iSeqNums}
DBRes := DBiGetCursorProps(Handle,cP);
if DBRes <> DBIERR_NONE then exit;
{synchronize the BDE cursor with the dataset's cursor}
UpdateCursorPos;
{fill rP with the current record's properties}
DBRes := DBiGetRecord(Handle,DBiNOLOCK,nil,@rP);
if DBRes <> DBIERR_NONE then exit;
{what kind of dataset are we looking at?}case cP.iSeqNums of
0: result := rP.iPhyRecNum; {dBase}
1: result := rP.iSeqNum; {Paradox}end;
end;
end;
Функция для извлечения номера записи из базы данных dBASE или Paradox!
Функция FindRecordNumber принимает параметр TDataSet, aDataSet, который представляет соединение с либо дБASE, либо Paradox базой данных. Функция возвращает номер записи в виде longint.
Работа функции следующая:
Сначала функция проверяет, является ли dataset неактивным (т.е., state = dsInactive). Если это так, она выходит из функции сразу.
Затем функция вызывает DBiGetCursorProps для получения свойств курсора для текущего dataset. Это возвращает значение DBiResult, которое проверяется на ошибки.
Функция синхронизирует курсор BDE с курсором dataset, используя UpdateCursorPos.
Затем функция получает свойства записи для текущей записи, используя DBiGetRecord. Опять же, она проверяет на ошибки.
Наконец, функция определяет тип dataset, examining the iSeqNums свойство в свойствах курсора.
Для дБASE dataset номер записи хранится в поле iPhyRecNum свойств записи. Для Paradox dataset он хранится в поле iSeqNum.
Вот разбивка кода:
functionFindRecordNumber(aDataSet:TDataSet):longint;varcP:CurProps;// свойства курсораrP:RECProps;// свойства записиDBRes:DBiResult;// результат базы данныхbegin{Возвращаем 0, если dataset не Paradox или dBase}Result:=0;withaDataSetdobeginifstate=dsInactivethenexit;{Мы должны вызвать этот вызов для grabbing iSeqNums курсора}DBRes:=DBiGetCursorProps(Handle,cP);ifDBRes<>DBIERR_NONEthenexit;{Синхронизируем курсор BDE с курсором dataset}UpdateCursorPos;{Заполняем rP свойствами текущей записи}DBRes:=DBiGetRecord(Handle,DBiNOLOCK,nil,@rP);ifDBRes<>DBIERR_NONEthenexit;{Какой тип dataset мы обрабатываем?}casecP.iSeqNumsof0:result:=rP.iPhyRecNum;{dBase}1:result:=rP.iSeqNum;{Paradox}end;end;end;
В целом, эта функция предоставляет способ извлечения номера записи из либо дБASE, либо Paradox базы данных с помощью библиотеки BDE (Borland Database Engine).
Представлен код функции FindRecordNumber, которая позволяет получить номер записи в дата-сете dBASE или Paradox.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.