Недавно добавленные исходники

•  3D Designer  137

•  Sik Screen Capture  110

•  Patch Maker  93

•  Айболит (remote control)  113

•  ListBox Drag & Drop  85

•  Доска для игры Реверси  1 615

•  Графические эффекты  101

•  Рисование по маске  76

•  Перетаскивание изображений  79

•  Canvas Drawing  82

•  Рисование Луны  153

•  Поворот изображения  66

•  Рисование стержней  58

•  Paint on Shape  52

•  Генератор кроссвордов  66

•  Головоломка Paletto  76

•  Теорема Монжа об окружностях  113

•  Пазл Numbrix  57

•  Заборы и коммивояжеры  88

•  Игра HIP  66

•  Игра Go (Го)  51

•  Симулятор лифта  57

•  Программа укладки плитки  56

•  Генератор лабиринта  97

•  Проверка числового ввода  46

•  HEX View  102

•  Физический маятник  102

•  Задача коммивояжера  129

•  Автомобильная пробка  52

•  Квадратные сетки из слов  46

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Использование API BDE для представления данных



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, BDE, ExtCtrls;

type
  TMainForm = class(TForm)
    PriorBtn: TBitBtn;
    Panel2: TPanel;
    NextBtn: TBitBtn;
    Label3: TLabel;
    CountryEdit: TEdit;
    Label1: TLabel;
    CapitalEdit: TEdit;
    procedure PriorBtnClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure NextBtnClick(Sender: TObject);
  private
    hDB: hDBIDB;
    hCur: hDBICur;
    CursProps: CurProps;
    RecBuf: pByte;
    FValue: array[0..255] of Char;
    IsEmpty: Bool;
    procedure OnBDEError;
  public
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.OnBDEError;
var ErrInfo: dbiErrInfo; //Структура, содержащая информацию об ошибках
  AStr: string;
begin
  DbiGetErrorInfo(True, ErrInfo); //Функция возвращает информацию об ошибке
  case ErrInfo.iError of
    9733: AStr := 'Для создания записи недостаточно параметров ';
    10024: AStr := 'Ошибка доступа к данным';
    10245: AStr := 'База данных занята другим пользователем';
    10038: AStr := 'Значение поля задано неверно';
    11871: AStr := 'Несоответствие типов';
    11959: AStr := 'В выражении отсутствует оператор GROUP BY';
  else
    AStr := 'Ошибочная операция с данными';
  end;
  ShowMessage(AStr);
end;

procedure TMainForm.FormShow(Sender: TObject);
begin
  hDB := nil;
  hCur := nil;
  DbiInit(nil); // Инициализация системы BDE
  DbiOpenDatabase // Открытие базы данных
    (
    'DBDEMOS', // Псевдоним базы данных
    nil, // Тип базы данных
    dbiReadWrite, // Режим редактирования данных
    dbiOpenShared, // Режим разделения данных
    nil, // Пароль
    0, // Число дополнительных параметров
    nil, // Перечень полей для доп. параметров
    nil, // Список доп. параметров
    hDB // Дескриптор базы данных
    );
  DbiSetPrivateDir('c:\temp'); // Определение временного каталога
  DbiOpenTable // Открытие таблицы
    (
    hDB, // Дескриптор базы данных
    PChar('COUNTRY'), // Название таблицы
    PChar(szParadox), // Тип таблицы (только для локальных БД)
    nil, // Название индекса (необязательный)
    nil, // IndexTagName - только для dBASE
    0, // 0 - использовать первичный индекс
    dbiReadWrite, // Режим редактирования данных
    dbiOpenShared, // Режим разделения данных
    xltField, // Режим трансляции данных
    False, // Признак одностороннего перемещения курсора
    nil, // Дополнительные параметры
    hCur // Дескриптор курсора таблицы
    );
  DbiGetCursorProps // Определение параметров курсора
    (
    hCur, // Дескриптор курсора таблицы
    CursProps // Структура параметров курсора
    );
  GetMem(RecBuf, CursProps.iRecbufSize * SizeOf(Byte)); // Выделение памяти под буфер записи
  DbiSetToBegin(hCur); // Установка курсора в начало набора данных
  DbiGetNextRecord // Перемещение на первую запись
    (
    hCur, // Дескриптор курсора таблицы
    dbiNoLock, // Режим ограничения доступа
    RecBuf, // Буфер записи
    nil // Параметры записи
    );
  DbiGetField // Получение значения поля
    (
    hCur, // Дескриптор курсора таблицы
    1, // Номер поля в структуре таблицы
    RecBuf, // Буфер записи
    @FValue, // Переменная, в кторую передается значение
    IsEmpty // Признак пустой ячейки
    );
  MainForm.CountryEdit.Text := FValue;
  DbiGetField(hCur, 2, RecBuf, @FValue, IsEmpty);
  MainForm.CapitalEdit.Text := FValue;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  try
  finally
    FreeMem(RecBuf); // Освобождение памяти буфера записи
    DbiCloseCursor(hCur); // Закрытие курсора
    DbiCloseDatabase(hDB); // Закрытие базы данных
    DbiExit; // Закрытие сеанса работы с BDE
  end
end;

procedure TMainForm.PriorBtnClick(Sender: TObject);
begin
  try
    if DbiGetPriorRecord(hCur, dbiNoLock, RecBuf, nil) = DBIERR_BOF
      then PriorBtn.Enabled := False
    else
    begin
      if not NextBtn.Enabled then NextBtn.Enabled := True;
      DbiGetField(hCur, 1, RecBuf, @FValue, IsEmpty);
      MainForm.CountryEdit.Text := FValue;
      DbiGetField(hCur, 2, RecBuf, @FValue, IsEmpty);
      MainForm.CapitalEdit.Text := FValue;
    end;
  except
    OnBDEError;
  end;
end;

procedure TMainForm.NextBtnClick(Sender: TObject);
begin
  try
    if DbiGetNextRecord(hCur, dbiNoLock, RecBuf, nil) = DBIERR_EOF
      then NextBtn.Enabled := False
    else
    begin
      if not PriorBtn.Enabled then PriorBtn.Enabled := True;
      DbiGetField(hCur, 1, RecBuf, @FValue, IsEmpty);
      MainForm.CountryEdit.Text := FValue;
      DbiGetField(hCur, 2, RecBuf, @FValue, IsEmpty);
      MainForm.CapitalEdit.Text := FValue;
    end;
  except
    OnBDEError;
  end;
end;

end.

Скачать весь проект





Похожие по теме исходники

GDI+ API

Snake & MiniSaper WinApi

Калькулятор на WinApi

Menu Icon WinApi

 

Octapion (шашки)

Error Vodes Win API

Посторонние окна WinAPI

Windows API (SendMessage)

 

API Hook

BDE Errors List

База данных без BDE

БД без BDE

 

WebDezign Formulare

Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

 

Кувшины для воды

Доска для игры Реверси

Экспорт баз данных в Excel

База данных "Книжный магазин"

 

База данных Видеофильмов

База данных "Школа"

База данных студентов

Фильтрование данных

 

Pevrica (сжатие данных)




Copyright © 2004-2021 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter