Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Курс видеоуроков КРЭКЕРСТВО + ПРОГРАММИРОВАНИЕ 2017
(актуальность: июнь 2017)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Запись и чтение чисел в Blob-поле

Автор: Ralph Friedman

Болтают трое молодых программистов о жизни. Двое холостых и один женатый.
- Зря вы говорите, что жениться sux, вот я жене на домашнем компе права админа дал!

Мне нужно записать серию чисел в файл Paradox в blob-поле. Числа получаются из значений компонент, размещенных на форме. Затем мне нужно будет считывать числа из blob-поля и устанавливать согласно им значения компонент. Как мне сделать это?

Вы можете начать свое исследование со следующего модуля:


 unit BlobFld;
 
 interface
 
 uses
   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
   Forms, Dialogs, StdCtrls, Buttons, DBTables, DB, ExtCtrls, DBCtrls,
   Grids, DBGrids;
 
 type
   TFrmBlobFld = class(TForm)
     BtnWrite: TBitBtn;
     Table1: TTable;
     DataSource1: TDataSource;
     DBNavigator1: TDBNavigator;
     LbxDisplayBlob: TListBox;
     Table1pubid: TIntegerField;
     Table1comments: TMemoField;
     Table1UpdateTime: TTimeField;
     Table1Real1: TFloatField;
     Table1Real2: TFloatField;
     Table1Real3: TFloatField;
     Table1Curr1: TCurrencyField;
     Table1Blobs: TBlobField;
     Table1Bytes: TBytesField;
     CbxRead: TCheckBox;
     procedure BtnWriteClick(Sender: TObject);
     procedure DataSource1DataChange(Sender: TObject; Field: TField);
     procedure FormShow(Sender: TObject);
     procedure FormClose(Sender: TObject; var Action: TCloseAction);
   private
     { Private-Deklarationen }
   public
     { Public-Deklarationen }
   end;
 
 var
   FrmBlobFld: TFrmBlobFld;
 
 implementation
 
 {$R *.DFM}
 
 type
   ADouble = array[1..12] of double;
   PADouble = ^ADouble;
 
 procedure TFrmBlobFld.BtnWriteClick(Sender: TObject);
 var
   i: integer;
   myBlob: TBlobStream;
   v: longint;
 begin
   Table1.Edit;
 
   myBlob := TBlobStream.Create(Table1Blobs, bmReadWrite);
   try
     v := ComponentCount;
     myBlob.Write(v, sizeof(longint));
 
     for i := 0 to ComponentCount - 1 do
     begin
       v := Components[i].ComponentIndex;
       myBlob.Write(v, sizeof(longint));
     end;
   finally
     Table1.Post;
     myBlob.Free;
   end;
 end;
 
 procedure TFrmBlobFld.DataSource1DataChange(Sender: TObject; Field: TField);
 var
   i: integer;
   myBlob: TBlobStream;
   t: longint;
   v: longint;
 begin
   if CbxRead.Checked then
   begin
     LbxDisplayBlob.Clear;
 
     myBlob := TBlobStream.Create(Table1Blobs, bmRead);
     try
       myBlob.Read(t, sizeof(longint));
       LbxDisplayBlob.Items.Add(IntToStr(t));
 
       for i := 0 to t - 1 do
       begin
         myBlob.Read(v, sizeof(longint));
         LbxDisplayBlob.Items.Add(IntToStr(v));
       end;
     finally
       myBlob.Free;
     end;
   end;
 end;
 
 procedure TFrmBlobFld.FormShow(Sender: TObject);
 begin
   Table1.Open;
 end;
 
 procedure TFrmBlobFld.FormClose(Sender: TObject;
   var Action: TCloseAction);
 begin
   Table1.Close;
 end;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS