说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

DELPHI中DFM文件与文本文件转换

HTML文档下载 WORD文档下载 PDF文档下载
DELPHI中DFM文件与文本文件转换

在Delphi可视化设计环境中,允许程序员在代码编辑器中以文本的方式浏览和修改DFM文件内容。当用File/Open命令直接打开DFM文件或者选择窗体设计窗口的弹出式菜单上的View as Text命令时,就会在编辑器中出现文本形式的信息。在一些资料中将这种文本形式称之为窗体设计脚本。Delphi提供的这种脚本编辑功能是对Delphi可视化设计的一大补充。当然这个脚本编辑能力是有限制的,比方说不能在脚本任意地添加和删除部件,因为代码和DFM脚本是紧密相连的,任意添加和修改会导致不一致性。但在动态生成的DFM文件中,就不存在这一限制。

实际上,DFM文件内容是二进制数据,它的脚本是经过Delphi开发环境自动转化的,而且Delphi VCL中的Classes库单元提供了在二进制流中的文件DFM和它的脚本之相互转化的过程。它们是ObjectBinaryToText和ObjectTextToBinary、ObjectResourceToText和ObjectTextToResource。

ObjectBinaryToText过程将二进制流中存储的部件转化为基于文本的表现形式,这样就可以用文本处理函数进行处理,还可以用文本编辑器进行查找和替代操作,最后可以将文本再转化成二进制流中的部件。

ObjectTextToBinary过程执行的功能与ObjectBinaryToText相反,将TXT文件转换为二进制流中的部件,而且只要TXT文件内容的书写符合DFM脚本语法,ObjectTextToBinary可将任何程序生成的TXT文件转换为部件,这一功能也为DFM文件的动态生成和编辑奠定了基础。

DFM文件与DFM脚本语言之间相互转换的任务由ObjectResourceToText和ObjectTextToResource两个过程完成。下面以我所拥有的Delphi编程资料作详细说明:

ObjectResourseToText过程比较简单,如下:

procedure ObjectResourceToText(Input

Output:TStream);

begin

Input.ReadResHeader;

ObjectBinaryToText(Input

Output);

end;

ObjectTextToResource过程就比较复杂,因为DFM文件资源头中要包含继承标志信息,因此在调用ObjectTextToBinary后,就读取标志信息,然后写入资源头。

procedure ObjectTextToResource(Input

Output:TStream);

var

Len:Byte;

Tmp:Longint;

MemoryStream:TMemoryStream;

MemorySize:Longint;

Header:array[0.79] of Char;

begin

MomoryStream:=TMemoryStream.Create;

try

ObjectTextToBinary(Input

MemoryStream);

MemorySize:=MemoryStream.Size;

FillChar(Header

SizeOF(Header)

0);

MemoryStream.Position:=SizeOf(Longint);{Skip header}

MemoryStream.Read(Len

1);

if Len and $F0=$F0 then

begin

if ffChildPos in TFilerFlags(Len and $F0) then

begin

MemoryStream.Read(Len

1);

case TValueType(Len) of

vaInt8:Len:=1;

vaInt16:Len=2;

vaInt32:Len=4;

end;

MemoryStream.Read(Tmp

Len);

end;

MemoryStream.Read(Len

1);

end;

MemoryStream.Read(Header[3]

Len);

StrUpper(@Header[3]);

Byte((@Header[0])^):=$FF;

Word((@Header[1])^):=10;

Word((@Header[Len+4])^):=$1030;

Longint((@Header[Len+6])^):=MemorySize;

Output.Write(Header

Len+10);

Output.Write(MemoryStream.Memory^

MemorySize);

finally

MemoryStream.Free;

end;

pflua:用Lua编写的高性能网络包过滤工具箱 掌上明珠张磊:如何设计手游付费体系 云游科技何千军:游戏开发和后端逻辑经验 《近匠》Highway1:孵化,不只是简单的帮助 嘉宾来了 MDCC 2014首批演讲嘉宾名单公布 前雅虎CTO:Hadoop扩展过程中的7个危险信号 【云先锋】星环TDH:性能大幅领先于开源Hadoop2的技术架构赏析 一周消息树:我想创业,但不懂技术怎么办? GitHub迁移数据库,借助MySQL大行其道! 实例亲授:教你如何创建AR应用 iOS七年,苹果都为开发者准备了哪些工具? TIOBE 2014年9月编程语言排行榜:Java、C++跌至历史最低点 如何甄别具有软实力的IT应聘者? 避免关注底层硬件,Nvidia将机器学习与GPU绑定 盘点MIT Demo Day上4个最有前途的创业点子 IDF 2014第一天纵览:智能设备唱主角 时尚化才是可穿戴的未来 ASP.NET之父Scott Guthrie:借技术之力铺平未来之路 两年测试,NSA或将让其数据中心洗上油浴 【云先锋】数云:另类淘宝创业,瞄准背后百万卖家的数据挖掘 Xcode 6 GM、6.1齐出,Swift终迎1.0版! 我眼中的Devops——倍道而进! 英特尔物联网世界:提供开发工具包,实现万物互联 三十功名尘与土——我的程序员生涯自白 触摸未来:为什么说AR是未来最重要的人机界面? 科普:谈云计算中间件理念 能准确“猜透”玩家心理,深度学习让游戏更智能 阿里过程改进专家:看板核心在于拉动式管理过程+数据化支持改进 英特尔Edison全面上市,专为小型可穿戴设备设计 APM最佳实践:Web 2.0和AJAX四大优化战略 开放•创新•共赢 2014华为开发者联盟沙龙即将开幕 排名前十的SQL和NoSQL数据库 help,base64编码 大家好,我的问题很严重。。。 哪有mediaPlayer控件的中文开发资料,谢谢大家帮忙!!! 谁能和我说一下这个程序怎么作啊 寻找VRAMDir,在计算机应用文摘里写过! sql7+access的速度问题?大家的意见? 在CTreeCtrl中,如何知道用户点击已被选择了的Item? 哪里有bas5.0的下载??????????万分感激啊!! 打印问题谁能解决 谁用过‘北京利马公司’的ERP软件?评论??? 各位大哥帮帮我! 微软高手请进:CE下开发的三个(高难度)问题。。。 现在最好的jsp服务器是什么??最全面稳定的是哪一个?? 那位仁兄能给出一个24位bmp的图片转换成黑白的bmp图片的代码(别嫌分少啊) 对不住我的职业道德了…… 那位仁兄能给出一个24位bmp的图片转换成黑白的bmp图片的代码( 别嫌分少) 一个很菜的问题:怎样把文档类的数据传到CMainFrame 一个很有趣的问题,但是比较难哟,高手请进,一定给分!!!! 请问war是什么文件? 用LOTUS SCRIPT怎么样对修改一个文档中域的值?有没有代码? 各位,哪里有design patterns下载呀? 打印问题有谁能解决 十万火急,兄弟们过来帮帮忙........... 多字段模糊查询~~~谁会啊!! 高手请进 关于dialog和控件回车键消息处理的小问题 photoshop背景色的问题 虚函数能否做友元? const^:^ *********在dll文件中怎样打开一个窗口********* 自定义对话框 求解:怎样使用数据窗口能多页预览?有这项功能吗? 域的DNS有问题! 出现out of range 只是偶尔出现并不是经常出现?我的配置在里面 想问问大家关于微软认证的看法。 我有光驱上哪找 请问斑竹:c#中有类似exit(0)之类的函数吗, 请问谁有将可执行文件中的资源提取出来保存在新的rc文件中的源代码? PB数据库的连接分类解决问题? 数据窗口鼠标焦点为什么会遗失? 怎么用xp安装盘升级两千或酒吧下的wmp? 怎样得知ListBox中已经有多少项内容了? 看看大家关于微软认证的看法(只能给77,全给了) OFFICE XP以及金山词霸的漂亮菜单如何实现的??有源代码可以参考吗?? 谁能说一下"快手"的程序是怎么工作的啊 这个问题我都问了三遍了,还是没人帮忙回答一下? 这样怎么能不行了?怪了. ~散分哦~,哈~ 可怜的准初级程序员(水平的没过,竟然拿了个资历格的) 各位兄弟请了!一个远程接入问题邀请教各位~! 这个问题好象不难 bis装 什么意思 在广西哪里能买的价格合适质量较好的胶印油墨?报价大概是多少 P为圆O内一点,OP=4cm,圆O半径为5cm,则经过P点最短的弦长为多少?最长的弦长为多少?怎么画图呀, ei是什么意思 结构力学里,用力矩分配法计算连续梁绘制弯矩图和剪力图 EI为常数~ 请问哪里能买到胶印油墨质量好价格低胶印纸张油墨 石家庄 各个传奇(热血、传奇世界、传奇3g)什么联系?有多少版本? 急请力学高手解(结构力学)悬臂刚架在C点作用荷载P,试求D点的挠度.EI=常数,出来加50分 结构力学求解器怎么用?smsolver 简支梁承受均布和集中荷载,跨中挠度在哪查?为什么位移都是零我定义过刚度了 你给我发个30a工字钢的材料性质命令我试试看! ei+1=0是什么意思? 氢气与氦气的区别?他们的密度分别是多少? 我就是不清楚次梁集中力 应该分配多少给我计算的这一榀框架上的柱子上面的,是一半还是多少? 广州化工原料哪里买优惠 3种以上制取氯化钠的化学方程式及类型 质量保证书怎么写 人类在建造人工生态系统的探索中还做了哪些努力?这些努力有什么意义? 临床上的BIS是什么意思? 盐酸与氢氧化钠反应 硫酸与氢氧化钡的反应 盐酸与氢氧化铝的反应 写化学方程式 那里化工原料群? bis是什么/ 水果质量保证书 怎么写有家食堂向我们家要水果供应 我家是个体户水果批发 他要我们提供水果质量保证书 这要怎么写 水果主要是西瓜 香蕉 人类在建造人工生态系统的探索中还做了哪些努力 什么是bis,作用是什么?晕,不是我提问的,我只有找个最全的.其他人抱歉了 某兴趣小组在进行探究时,试验用密度比氢气稍大的氦气作为大型升空气球的填充体,其原因是?1.2. 结构力学求解器内力系数EA怎么设 跪求氦气在不同压力下的密度?有谁知道氦气在不同压力下的密度?或者如何计算? 氦气密度约为氢气()倍,性质()活泼,可用于()等 黑洞的密度有多大黑洞的密度究竟有多大?能打个比方说明一下吗?急想知道 求图示结构B点的水平位移,EI=常数要画图的话也可以直接发照片的,急用! 什么气体密度比空气小(即可以作为气球飞上天的),除氢气外救球, 请问黑洞的密度有多大? 结构力学位移法试题,EI无穷大怎么处理 化工企业的安全与环保我们单位要叫写一篇关于安全与环保的文章.是一个民营企业.要出在黑板报上的那种. 黑洞的密度是多大? 用位移法求解图示刚架(各杆EI=常数) 讨论/沟通:怎样做好化工企业的安全管理工作!给大家提供一个交流的平台,为国家的安全工作尽点牛毛之力.宗旨:保社会稳定,促经济发展. 结构力学求解器中的单元材料性质如何确定?本人在做毕业设计,打算用结构力学求解器,求竖向荷载作用下的框架内力.则要求输入梁、柱EI和EA等,问题是这个E是等于所采用的水泥的Ec,还是要预 壬酸是化工原料还是化工产品 化工商店销售某种新型化工原料,其市场指导价是没千克160元,这种原料的进价是市场指导价的0.75倍1,为扩大销售量,化工商店决定适当调整价格,调整后的价格按八折销售,仍可获利售价0.2倍的 大家看一下这个Bis-Tris HCl 结构力学中什么是杆件结构 什么是多跨静定梁 什么是影响线 什么是转动刚度 如图,在△ABC中BC=5cm,BP、CP分别是∠ABC和∠ACB的角的平分线,且PD‖AB,PE‖AC,则△PDE的周长是_______cm若∠BPC=110°,则∠DPE=几度 结构力学求解器 请将单元性质输入后再计算是什么意思? 转动刚度怎么求 如图所示,在△ABC中,BC=5cm,BP、CP分别是∠ABC和∠ACB的平分线,且PD//AB,PE//AC,则△PED的周长是 结构力学求解器提示将单元性质输入再计算是什么意思 求2010年结构力学,变截面梁那题的转动刚度怎么解变截面梁那题的第一问转动刚度怎么解,是按以变截面处为点,两边一边是按固定端算,一边以简支算吗 如图,在△ABC中,BP、CP分别是∠ABC、∠ACB的平分线,且PD∥AB,PE∥AC,△PDE的周长是8厘米,求BC的长度图片发不出来啊QAQ 结构力学求解器中怎么设置单元性质? 一个充有密度为0.18千克每m³的飞艇,体积为400m³,在空中飞行,空气密度为1.29千克每m³,求1)飞艇在空中飞行时受到的浮力(2)若飞艇自身的质量为130千克,则他可以装载的货物最大质量不 △ABC中,SC=5CM,BP,CP是∠ABC和∠ACB角平分线,PD‖AB,PE‖AC,△PDE的周长时多少?谢 魔兽世界里·bis·和·AE·这两个名词是什么意思 若你买胶印油墨,需要考虑什么因素? 三角形ABC中BC=5厘米BP.CP分别是角ABC、角ACB的平分线,且PD//AB,PE//AC点D、E在边BC上求三角形PDE的周长 bis(fluorosulfonyl)imide这是什么意思? 请问胶印油墨国家标准吗?请问平版四色胶印油墨的执行标准是怎么样的? 沈阳的化工原料交易市场在哪里?拜求!坐几路车到,有没有地铁站?从虎跃站点怎么走?请问“匿名”回答者,南五马路坐几路车到? BIS的标准的含义这个也是钢材外贸中遇到的问题 一般胶印油墨的物理密度是多少? 在圆O中,弦MN//EF,P是圆O上一点.已知圆O的半径为10cm,MN=12cm,EP=16cm,求弦MN和EF之间的距离.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn