分发不出去,用来请教高手,百思不得其解,DFM文件为什么要设计成伪代码形式 (100分)

  • 主题发起人 主题发起人 我爱PASCAL
  • 开始时间 开始时间

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么不设计为源代码格式,这样显得更统一,我猜想伪代码形式的DFM最后也被编译器编译
为机器码,它是不是先将其转为源代码,再编译的.
另外好多例子(包括大富翁)都不给DFM,使俺上机测试时十分不便.
 
DFM不是代码,而是作为资源的
 
菜单 tools/environment options/preferences/new form as text 打勾,
新建的dfm就是文本的了
 
在delphi。菜单open/file,直接打开dfm文件,不管是什么格式,都可以看到文本格式
 
这就不懂了,给属性赋值也算资源.我看搞成代码不好,更加易懂,
 
我知道是文本格式,我说的不是这个意思,而是这个文本格式不是OBJECT PASCAL 的语法形式.
 
他是资源来的,这样写更明白吧
做成资源,load进来就可以设置缺省属性了
 
DFM只是在Design時期所使用的檔案
它有兩格式, 一是常見的本文格式
二是Delphi
自定義的兩進制格式
至於在運行期, Form的定義確實是放在Exe文本的Resource中, 並且以Form的Class名稱
做為Resource的名稱
以下附一個簡單的函數, 可以將EXE中包含的Delphi的Form Resource由EXE中提取出來,
並還原為DFM的本文格式

procedure ReadExeForm(const ExeName, FormClass, DfmFile: string);
var
hExe: THandle;
ResStm: TResourceStream;
TextStm: TFileStream;
begin
hExe := LoadLibraryEx(PChar(ExeName), 0, LOAD_LIBRARY_AS_DATAFILE);
if hExe = 0 then RaiseLastWin32Error;
try
ResStm := TResourceStream.Create(hExe, FormClass, RT_RCDATA);
try
TextStm := TFileStream.Create(DfmFile, fmCreate);
try
ObjectBinaryToText(ResStm, TextStm);
finally
TextStm.Free;
end;
finally
ResStm.Free;
end;
finally
FreeLibrary(hExe);
end;
end;
 
那个不是Pascal代码
不过很容易看的懂,有什么不好的呀
我有时还真的喜欢那个东西,想改控件基类的话就很方便呀
 
DFM不是代码,而是作为资源的
 
打破沙锅问到底,为什么又必须设计为资源,资源有什么好处,以前DOS 下TURBO PASCAL编的程序
为什么不用资源
 
资源的格式比较固定,设计器修改属性方便,要是代码的话,机器不理解
 
资源是否是自定义的一些格式,比如像游戏中的地图,而DELPHI 中是直接将其{$I}进来,
我想肯定还加了一些引导的代码,将可视化的对象作初始化,对不?
 
多人接受答案了。
 
后退
顶部