Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Мне нужно записать серию чисел в файл Paradox в blob-поле. Числа получаются из значений компонент, размещенных на форме. Затем мне нужно будет считывать числа из blob-поля и устанавливать согласно им значения компонент. Как мне сделать это?
Вы можете начать свое исследование со следующего модуля:
unitBlobFld; 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
.