电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

复杂的结构化存取(二)


发布日期:2023/3/27
 

本例效果图

代码文件

unitUnit;

interface

uses

WindowsMessagesSysUtilsVariantsClassesGraphicsControlsForms

DialogsStdCtrls;

type

TForm=class(TForm)

Button:TButton;

Button:TButton;

procedureFormCreate(Sender:TObject);

procedureButtonClick(Sender:TObject);

procedureButtonClick(Sender:TObject);

end;

var

Form:TForm;

implementation

{$R*dfm}

UsesActivex;

type

TRec=record

Name:string[];

Age:Word;

end;

constFileName=C:TempTestdat;

procedureTFormFormCreate(Sender:TObject);

begin

ButtonCaption:=写复合文件;

ButtonCaption:=读复合文件;

Position:=poDesktopCenter;

end;

procedureTFormButtonClick(Sender:TObject);

const

Mode=STGM_CREATEorSTGM_READWRITEorSTGM_SHARE_EXCLUSIVE;

var

StgRootStgSub:IStorage;

Stm:IStream;

Rec:TRec;

begin

{建立根IStorage:StgRoot}

StgCreateDocfile(FileNameModeStgRoot);

{建立子IStorage:StgSub}

StgRootCreateStorage(StgSubModeStgSub);

{在子IStorage:StgSub中建立IStream:Stm}

StgSubCreateStream(StmModeStm);

{写入数据}

RecName:=张三;

RecAge:=;

StmWrite(@RecSizeOf(TRec)nil);

end;

procedureTFormButtonClick(Sender:TObject);

const

Mode=STGM_READorSTGM_SHARE_EXCLUSIVE;

Var

StgRootStgSub:IStorage;

Stm:IStream;

Rec:TRec;

Begin

{如果不是结构化存储文件则退出}

ifStgIsStorageFile(FileName)<>S_OKthenExit;

{获取根IStorage:StgRoot}

StgOpenStorage(FileNamenilModenilStgRoot);

{获取子IStorage:StgSub;注意:第一个参数的名称必须和保存时一致}

StgRootOpenStorage(StgSubnilModenilStgSub);

{获取IStream:Stm;注意:第一个参数的名称必须和保存时一致}

StgSubOpenStream(StmnilModeStm);

{读出数据}

StmRead(@RecSizeOf(TRec)nil);

ShowMessageFmt(%s%d[RecNameRecAge]);

end;

end

窗体文件

objectForm:TForm

Left=

Top=

Caption=Form

ClientHeight=

ClientWidth=

Color=clBtnFace

FontCharset=DEFAULT_CHARSET

FontColor=clWindowText

FontHeight=

FontName=Tahoma

FontStyle=[]

OldCreateOrder=False

OnCreate=FormCreate

PixelsPerInch=

TextHeight=

objectButton:TButton

Left=

Top=

Width=

Height=

Caption=Button

TabOrder=

OnClick=ButtonClick

end

objectButton:TButton

Left=

Top=

Width=

Height=

Caption=Button

TabOrder=

OnClick=ButtonClick

end

end

上一篇:主从表的添加保存处理实现方法

下一篇:DistributedTransactionCoordinator无法启动