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

Мне нужно записать серию чисел в файл 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.


Взято с http://delphiworld.narod.ru

Как мне в таблице Paradox скопировать массив целочисленных чисел в TBlobField и наоборот? Элементы массива являются точками графика данных, который я хочу выводить, если запись доступна.
Запишите массив в поток памяти и затем используйте метод TBlob LoadFromStream. Для извлечения данных используйте метод TBlob SaveToStream (сохранение и извлечение массива из потока памяти).

Взято с http://delphiworld.narod.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...