Windows XP / Delphi 7中的持久对象
发布时间:2020-12-14 05:28:56 所属栏目:Windows 来源:网络整理
导读:我试图在Delphi 7,Windows XP中制作一个AlarmSystem.我必须在数据库(MS SQL Server 2000)中注册警报.但是如果服务器坏了怎么办?好吧,我可以想象我必须坚持TAlarm类型的对象.那么,我该怎么做呢?也许继承自TComponent ???拜托,我该怎么办? 非常感谢. 我很抱
我试图在Delphi 7,Windows XP中制作一个AlarmSystem.我必须在数据库(MS SQL Server 2000)中注册警报.但是如果服务器坏了怎么办?好吧,我可以想象我必须坚持TAlarm类型的对象.那么,我该怎么做呢?也许继承自TComponent ???拜托,我该怎么办?
非常感谢. 我很抱歉我的英语. 在这里你有更多信息…… 解决方法
您可以继承TPersistent,然后可以使用TJvAppXMLFileStorage(
JVCL)组件来序列化TAlarm类.
保存对象 uses JvAppXMLStorage; Procedure SaveMyObject(MyAlarm : TAlarm) var MyStore: TJvAppXMLFileStorage; begin MyStore:= TJvAppXMLFileStorage.Create(nil); try MyStore.WritePersistent('',MyAlarm); MyStore.Xml.SaveToFile('C:MyAlarm.xml'); finally MyStore.Free; end; end; 恢复对象 uses JvAppXMLStorage; Procedure LoadMyObject(MyAlarm : TAlarm) var MyStore: TJvAppXMLFileStorage; begin MyStore:= TJvAppXMLFileStorage.Create(nil); try MyStore.FileName:='C:MyAlarm.xml'; MyStore.Xml.LoadFromFile('C:MyAlarm.xml'); MyStore.ReadPersistent('',MyAlarm); finally MyStore.Free; end; end; UPDATE 如果需要将多个对象持久保存到XML文件,则必须为WritePersistent和ReadPersistent方法分配路径(唯一ID). 看这个例子, 多重坚持 Procedure SaveMyObjects(MyObjects : Array of TComponent); var MyStore: TJvAppXMLFileStorage; i : integer; begin MyStore:= TJvAppXMLFileStorage.Create(nil); try for i := Low(MyObjects) to High(MyObjects) do MyStore.WritePersistent(MyObjects[i].Name,MyObjects[i]); //In this case i use the name property of the component. MyStore.Xml.SaveToFile('C:ToolsMyAlarm.xml'); finally MyStore.Free; end; end; 保存组件 SaveMyObjects([Button1,Button2,Edit1,Edit2]); 多个LOAD Procedure LoadMyObjects(MyObjects:Array of TComponent); var MyStore : TJvAppXMLFileStorage; i : integer; begin MyStore:= TJvAppXMLFileStorage.Create(nil); try MyStore.FileName:='C:ToolsMyAlarm.xml'; MyStore.Xml.LoadFromFile('C:ToolsMyAlarm.xml'); for i := Low(MyObjects) to High(MyObjects) do MyStore.ReadPersistent(MyObjects[i].Name,MyObjects[i]); finally MyStore.Free; end; end; 要还原属性 LoadMyObjects([Button1,Edit2]); 另一个加载选项 Procedure LoadMyObjectById(Id:String;MyObject:TComponent); //using the id of the object var MyStore : TJvAppXMLFileStorage; i : integer; begin MyStore:= TJvAppXMLFileStorage.Create(nil); try MyStore.FileName:='C:ToolsMyAlarm.xml'; MyStore.Xml.LoadFromFile('C:ToolsMyAlarm.xml'); MyStore.ReadPersistent(id,MyObject); finally MyStore.Free; end; end; 你必须以这种方式运行它 LoadMyObjectById(Button1.Name,Button1); //Again using the Name property. 我希望这个例子有用;) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Windows Phone 7 – 使用OpenID与PhoneGap和Wind
- .net – 如何在Windows Server 2012 R2上解决Per
- dll – GetProcAddress无法找到我的函数
- windows-phone-7 – WP7 Mango中的相机捕捉
- Windows – 桌面上的绘图线在Win 7上非常慢
- windows-phone-7 – 当UI有很多元素时如何快速导
- 为什么uint8_t和uint16_t的格式说明符相同(%u)?
- 如何使用Action委托参数方法将win32 app中的c方法
- windows-server-2008-r2 – 如何选择用于iSCSI的
- powershell – 复制文件夹/文件而不修改属性?
热点阅读