博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
咏南中间件统一的数据序列(还原)类
阅读量:4524 次
发布时间:2019-06-08

本文共 4762 字,大约阅读时间需要 15 分钟。

咏南中间件统一的数据序列(还原)类

1)支持DELPHI7及以上版本(已测试通过),更低DELPHI版本,有待测试,理论上也是能够支持的

2)支持序列/还原的基本类型包括:string, integer, bool, date, time, datetime, float

3)支持扩展的类型包括:buffer, stream, file, bytes, stringlist, oleVariant

4)支持直接序列/还原 数据集对象

5)支持跨平台序列/还原

支持的序列/还原接口:

procedure WriteString(const key, value: string);    procedure WriteInteger(const key: string; value: integer);    procedure WriteFloat(const key: string; value: Double);    procedure WriteBool(const key: string; value: Boolean);    procedure WriteDate(const key: string; value: TDateTime);    procedure WriteTime(const key: string; value: TDateTime);    procedure WriteDateTime(const key: string; value: TDateTime);    procedure WriteStream(const key: string; value: TStream);    procedure WriteBuf(const key: string; const buf; const len: integer);    procedure WriteBytes(const key: string; const bytes: TBytes);    procedure WriteStringList(const key: string; const list: TStringList);    procedure WriteFile(const key, filename: string);    {$IFDEF fd}    procedure WriteFDDataSet(const key: string; dataset: TFDAdaptedDataSet);    procedure WriteFDDelta(const key: string; dataset: TFDAdaptedDataSet);    {$ENDIF}    {$IFDEF ole}    procedure WriteOleVariant(const key: string; ole: OleVariant);    procedure WriteDelta(const key: string; cds: TClientDataSet);    procedure WriteParams(const key: string; params: TParams);    {$ENDIF}    //--------------------------------------------------------------------------    function ReadString(const key: string): string;    function ReadInteger(const key: string): Integer;    function ReadFloat(const key: string): Double;    function ReadBool(const key: string): Boolean;    function ReadDate(const key: string): TDateTime;    function ReadTime(const key: string): TDateTime;    function ReadDateTime(const key: string): TDateTime;    procedure ReadStream(const key: string; value: TStream);    procedure ReadBuf(const key: string; var buf; const len: integer);    procedure ReadBytes(const key: string; var bytes: TBytes);    procedure ReadStringList(const key: string; var list: TStringList);    procedure ReadFile(const key: string; stream: TStream);    {$IFDEF fd}    procedure ReadFDDataSet(const key: string; dataset: TFDMemTable);    procedure ReadFDDelta(const key: string; stream: TStream);    {$ENDIF}    {$IFDEF ole}    function ReadOleVariant(const key: string): OleVariant;    procedure ReadClientDataSet(const key: string; cds: TClientDataSet);    procedure ReadParams(const key: string; params: TParams);    {$ENDIF}

  下面是序列/还原的演示:

procedure TForm1.Button1Click(Sender: TObject);// 基本类型 序列/还原var  serial, serial2: TynSerial;  s: string;begin  serial := TynSerial.Create;  serial.WriteString('str', 'yn');  serial.WriteInteger('int', 888);  serial.WriteDateTime('now', now);  serial.WriteFloat('float', 12.68);  serial.WriteBool('bool', True);  s := serial.Text;  serial2 := TynSerial.Create;  serial2.Text := s;  Memo1.Lines.Add(serial2.ReadString('str'));  Memo1.Lines.Add(IntToStr(serial2.ReadInteger('int')));  serial.Free;  serial2.Free;end;procedure TForm1.Button2Click(Sender: TObject);// 流 序列/还原var  ms: TMemoryStream;  serial, serial2: TynSerial;  s: string;begin  ms := TMemoryStream.Create;  ms.LoadFromFile(ExtractFilePath(ParamStr(0)) + '1.bmp');  ms.Position := 0;  serial := TynSerial.Create;  serial.WriteStream('img', ms);  s := serial.Text;  serial2 := TynSerial.Create;  serial2.Text := s;  ms.Clear;  serial2.ReadStream('img', ms);  ms.Position := 0;  Image1.Picture.Bitmap.LoadFromStream(ms);  ms.Free;  serial.Free;  serial2.Free;end;procedure TForm1.Button3Click(Sender: TObject);// buffer 序列/还原var  r, r2: TRec;  serial, serial2: TynSerial;  s: string;begin  r.id := 1;  r.name := 'buf';  serial := TynSerial.Create;  serial.WriteBuf('buf', r, SizeOf(r));  s := serial.Text;  serial2 := TynSerial.Create;  serial2.Text := s;  serial2.ReadBuf('buf', r2, SizeOf(r2));  Memo1.Lines.Add(IntToStr(r2.id));  Memo1.Lines.Add(r2.name);  serial.Free;  serial2.Free;end;procedure TForm1.FormCreate(Sender: TObject);begin  ADOConnection1.Connected := True;end;procedure TForm1.Button4Click(Sender: TObject);// 数据集 序列/还原var  serial, serial2: TynSerial;  s: string;begin  ADOQuery1.Close;  ADOQuery1.SQL.Clear;  ADOQuery1.SQL.Add('select * from tgoods');  serial := TynSerial.Create;  serial.WriteOleVariant('goods', DataSetProvider1.Data);  ADOQuery1.Close;  ADOQuery1.SQL.Clear;  ADOQuery1.SQL.Add('select * from tunit');  serial.WriteOleVariant('unit', DataSetProvider1.Data);  s := serial.Text;  serial2 := TynSerial.Create;  serial2.Text := s;  serial2.ReadClientDataSet('goods', ClientDataSet1);  serial2.ReadClientDataSet('unit', ClientDataSet2);  serial.Free;  serial2.Free;end;

  

转载于:https://www.cnblogs.com/hnxxcxg/p/10451505.html

你可能感兴趣的文章