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

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;

Airbnb的管理之道:产品设计的点评策略与技巧 Windows 8.1 Update 1的下载地址和八点须知 《近匠》棱镜:手游渠道SDK平台的技术历程 OpenSSL究竟为何物,为何它的影响力如此之大? Redis大冒险:如何跳出SQL这个坑 【走近院士】张尧学:基于透明计算的云操作系统 微软转型之路:从Build 2014开始 大势所趋 HTML5成Web开发者最关心的技术 从火种到核心,浅析Hadoop大数据用户的演变 搭建高可用的MongoDB集群(上):MongoDB的配置与副本集 软硬件协同创新,共建未来数据中心 优秀Unix管理员的七个习惯 2014Unity亚洲开发者大会倒计时 干货内容日程汇总 TIOBE 2014年4月编程语言排行榜:Perl跌至历史最低点 Hadoop集群环境下网络架构的设计与优化 CloudFoundry架构优化:NATS集群化方案 Dropbox推独立应用,公司估值已达100亿美元 【走近院士】梅宏:云计算时代软件技术发展需求和挑战 云计算战争:OpenStack vs. VMware Cortana与Siri、Google Now的较量:支持功能更多 代码面试最常用的10大算法 “颠覆医疗” 时云医疗推三款硬件产品 华为章宇:如何学习开源项目及Ceph的浅析 EMC:大数据时代中对于数据保护的重新定义 Google Glass于4月15日在美对外开放购买,售价为1500美元 电脑上的网址怎么样复制到手机 创客天下——《Make》及Maker Faire创办人、O&amp;#039;Reilly Media创始人Dale Dougherty专访 《近匠》aGlass团队:透析眼控技术的价值 一周消息树:超级充电器来袭,30秒可为手机充满电 北森CTO张庆化:利用Spark实现数据驱动价值 大公网冯咀志:站内搜索系统的PowerLinux迁移实践 关于Exp时候的4031错误? JBUILDER 6 FOR LINUX 的注册码谁有啊 谁会用safileup上传下载文件? 关于OCX控件的两个问题 数据库更新不成功的问题!(菜鸟高分提问!) 求助:多线程访问数据库的问题 触发器?很简单的 紧急求助???狂加分!!! 不相上班,怎么办呀?各位有何高招? 学习ATL的建议!!! 请问: 多个javabean怎么相互调用?如。。。。 二个简单Access问题 qq号码集合之增强版 这样的查询该怎样实现呢? 求:谁有立方体旋转的程序?需要源代码!谢谢,万分焦急!!!谢谢,100分送!!! 怎样实现这样的界面? 关于多线程中操作数据库 给一个c#连接sybase数据库的例子,谢谢! c#datagrid 增加,删除,修改 工作急需,help!!!!!!!!!!!!! 请哪位高手帮小弟做一个井字棋游戏作业,救小弟一命,感激投地并送以高分,我的信箱见内! Exchange2000的怪问题,请高手指教。 三层中的问题? datawindow加计算域或line的程序加在哪? 请问各位收邮件的程序采用的是什么组件??!!因为CFPOP,JMAIL在收中文附件时都会出现乱码。参与有分。 求助EXCEL解密 !!大送分99分! 请教JAVA中读一个文件的时候 怎么锁住它 不让别的程序来写 在ASP页面中怎样获得域用户的信息? 求助: 移值C++出问题 谁能解救我于水火???怎样解决循环运算次数太大造成程序死机的问题? 谁有delphi或bcb的简单的画图程序的源码 二个简单Access问题 Access不支持位运算吗? qq号码集合之增强版 递归函数的工作原理! 二个简单Access问题 如何在声音控制中将“全部静音(M)”选中,实现系统静音?在线等候! 韩国变性艺人河莉秀以“性感之枪”姿态攻陷香港 如何用javascript在客户端清空<input type=file>的value值?50分! qq号码集合之增强版 二个简单Access问题 谁有《Inside the c++ object model》中文名《深度探索c++物件模型》的电子版。 谁有《Inside the c++ object model》中文名《深度探索c++物件模型》的电子版。 谁知道 bzero memcmp 等函数的原代码在哪个目录下 哪个文件里 我实在找不到了 请高手指点 或提供线索 Date Time Picker如何不弹出 这里是做梦的场所 二个简单Access问题 servlet的问题 我想为对话框的按钮提供快捷键 不使用mfc的加速功能 请问怎么实现 一个关于多窗口的问题 请问各位懂行的,一个50分钟的flash要多少钱?就是动画故事,象电视上的那种。 2014最新人教版初中地理课本封面是哪 从海水中提取淡水和海水中把盐分离出去有什么区别?"使海水淡化的途径 通过海水中提取淡水或从海水中把盐分离出去(脱盐),都可以达到淡化海水的目的."盐分离出去不就是剩下淡水么?也就 物流GPS在物流业发展有什么作用? “日出江花红胜火,春来江水绿如蓝”湖中的绿色来自哪类植物? a.藻类植物b.苔藓植物c蕨类植物d种子植物 有关中国近现代史纲要的论文应该怎么写? 手机的gps定位要用网络吗? 为纪念中国建党90周年,老师要求写一篇不少于500字的作文,围绕‘历史的选择’为主题一定要是关于建党90周年,还要围绕‘历史的选择’为主题.十万火急啊. 急求中国近现代经济史的问题的答案 哪些生物适应环境和影响环境,要实例 大量氮 磷等植物性营养元素进入水体后,营养物质过剩,藻类大量繁殖,水质恶化,水生生物死亡,一般称为什么?A.富营养化B.湖泊酸化C.有毒物制污染 中国近代经济史论文要有启示的 生物对环境的适应和影响事例,我明天上生物. 大量氮磷等植物胜营养元素进入水体后,营养物质过剩,藻类大量繁殖,水质恶化,水生物死亡,一般称为()A 富营养化 B 湖泊酸化C 有毒物质污染 D 湖泊氧化请认真对待请认真对待。 中国近现代史纲要(论文)1,中国近代历次反侵略斗争失败的原因和教训.2.结合近代中国人探索国家出路的历程,说明为什么中国选择了马克思主义.3.以毛泽东为主要代表的中国共产党人探索和 什么是科普小品文? 大量氮、磷等植物胜营养元素进入水体后,营养物质过剩,藻类大量繁殖,水质恶化,水生生物死亡,一般称为急 科普小品文的语言特点是什么? 女人梦见下雨,雨水淹没自己.女人梦见下雨,雨水淹没路面.自己不知不觉走入水中越走越深,淹没水中,拼命挣扎,后看到一男人骑车身边经过(为什么只有我陷进去了啊),还求救不帮,后被一女 一个作文是以庆祝中国建党90周年的作文,或者以光辉的旗帜为题的作文,400到500字,急! 怎么写“给中国近代名人的一封信”作文啊!有知道的人快帮帮我吧,明天要上交啊 女人梦见下雨好不好 LiF NaF KF CsF 四个物质中溶解度最小的是? 请区分一下3S技术 即GIS,RS,GPS重点介绍一下应用方面的要求 限制条件 和特点 另外 最好分析一下三项技术分别在灾害预测方面的特点 昨天晚上做梦梦见下雨很多雨水,但是没看见下雨,淹没过胸部,我和我一个姐妹就从水里边走了过去,在水里走的时候感觉呼吸都困难,过去之后有个楼房 我们就上去了,一会出来看,雨水几乎没 藻类植物及其所含营养物质 GIS,RS)? 利用超声波可测海洋的深度,已知超声波在海水中传播的速度为1.5×10的3次方m|s,若发利用超声波可测海洋的深度,已知超声波在海水中传播的速度为1.5×10的3次方m|s,若发出信号10s后接收到反射 LiF.NaF.KF.CsF谁的溶解度大,为什么? 3S的关系和特点(RS GIS GPS) 女人梦见蛇和下雨如何? 决定气温的热量主要来自于哪里?主要分析一下高原日温差为何比平原地区大.比较疑问的是高原通过大气路程不是比平原短吗?为何白天气温还比平原气温低? 3s 技术中RS,GIS,GPS,各自的定位及作用,特别是相互间的关系 梦见下雨是什么意思 猜出下列谜语I have cities but no houses ; forests but bo trees; rivers without water .What I'm 地理上的3S是指GIS,RS, 描写马的好句子 猜出下列的字谜……是字谜,别猜到其它的1、喜上眉头( ) 2、你我各一半( ) 3、干涉() 4、加上两点就能飞 ()5、一只黑狗,不叫也不吼() 6、综合门市() 7、两人力大冲破天() 物质结晶法主要有两种,分别是什么?海水晒盐是哪一种? 谁能给我一些关于气候类型判断的典型例题?就是关于我国的气候类型判断,浙教版的而是给我这一类的例题! 一个圆柱体和一个圆椎体的体积相等,底面直径的比是1:3,圆柱体与圆椎体的高的比是( 我能猜出下列字谜.九点——( ) 除了海水能提盐还有什么方法 三个圆椎体体积的和正好等于一个圆柱体的体积 对还不对 关于物种分类在物种分类中,"种"为什么没有英语单词?无脊椎动物为什么没有"纲"的分类? 英语翻译水边役人双双去.儿戴宝冠头已剃/金莲难走唯行寸,尔等伊人来相聚.莲花去头文满车,公公累得断右臂.一十八竹连一片,芍药落花白了地. 河北唐山七年级地理、思想品德、生物、历史用的是什么版本的教材 请将下列谜语猜出来会吃没有嘴,会走没有腿.过河没有水,败了没有罪. 哪些名人是残疾啊,作文 求素材 要出名的 霍金和张海迪就不用了 原生动物门中藻类的分类与色素种类营养方式进化关系和代表藻类?呵呵,要是表格就更好了 关于物种划分的问题按照物种的定义,划分物种主要是依据生物间是否能交配并产生可育的后代那么,同种生物的2倍体和4倍体能交配,但产生的3倍体后代是不可育的,是否2倍体和4倍体就形成了 英语翻译请翻译英语谜语1.John is the man with the blue blood2.Who's the boy in the hat?He's my son,Tom.3.He likes talking horse.4.He is always Number one in our class.5.Speak like a book.6.It rains cats and dogs.7.Hi,long time no see.8.She 藻类色素都有什么?求系统的整理后的答案.无 猜下列谜语 有没有写残疾人的事例与评价 例如张海迪,海伦凯勒等简介 如何证明鱼的色素细胞中色素分子的移动是微管依赖性的越快越好 入侵物种分类鉴定方法 英语翻译班杰明•富兰克林有个谜语:(答案是钱)The more a man has,the more he wants.Instead of filling a vacuum,it makes one.翻译成中文怎么说? 追寻红色足迹 论文我去的是福州路的上海书城,800~2000字 如何从海水蒸发中分离各种化学成份?能得到纯的盐吗?纯盐就是可以使用的食盐. 英语翻译姐妹一样长,结伴爱成双,酸甜和苦辣,两人都同尝.筷子我有两口井,模样很难分,双腿探下去,正好齐腰深.裤子远看山有色,近听水无声,春去花还在,人来鸟不惊.画兄弟一般高,出门就
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘