编译时有时出现internal error la30错误。有时出现rlink.dll 无法打开dfm文件错误。有时出现out of memery 错误。请问高手,这到底是怎么回事啊?是不是delphi的编译器问题,该如何解决?如果是窗体太多了,怎么做成模块化的。

解决方案 »

  1.   

    delphi默认在应用初始化的时候建立窗体不释放的,只是hide了,建的过多可能内存不够了吧,建议你在需要的时候才create窗体,不需要直接destroy。
      

  2.   

    用baidu查了一天没有找到结果。今天用google,5分钟找到解决方法,说:
    把 linker 选项中的 “输出 C++ .OBJ” 改为 “输出 DCU” 打开linker 选项,发现已经选择了“输出 DCU”,灵机一动,干脆把“输出 DCU”改为“输出c++ obj”,编译,天啊,竟然pass了。看了白读还是不如狗狗啊。这个问题解决了,但编译后的可执行程序有44m,也太大了点。怎么改为模块化,用bpl可以吗? bpl能包括窗体吗,还得需要调用bpl里面的窗体和变量,不知能否实现?请高手给个思路吧。
      

  3.   

    呵呵,确实如此
    封装成多个DLL
      

  4.   

    这个属于delphi的内部错误,当你的项目过大时出现这样的编译错误大部分与你无关,这么多窗体你应该考虑你一下你
    的设计模式
      

  5.   

    靠, 估计是你在 .dpr中默认创建了 N个窗体Application.CreateForm(TMainform, Mainform);
    Application.CreateForm(....)
    Application.CreateForm(....)
    Application.CreateForm(....)这样不死就怪, 还有BDS2006 在编译的时候有些内存泄露, 我的也是. 但是我的项目组的项目太多了, 我的电脑配制也不是很好, 但是在NB里就没问题.
      

  6.   

    我以前好像我问过这样一个类似的问题
    要是分模块,可以做成DLL,BPL再就是,可能某些窗体的代码有错误,开发的时候先单个开发,然后再合起来,我当时就是这样做的
      

  7.   

    是啊,自我感觉设计模式不是很好,正考虑dll 或bpl,不知哪个更容易,效率高,请有经验的给选择一下。我的项目是这样的,一个项目大概包括20个模块,一个模块包括5-20个窗体,每个窗体实现一个功能。我想把每个模块做成一个dll或bpl,然后调用bpl或dll里的数据和窗体。但不知用哪个?
      

  8.   

    嗯,我也遇过,把项目的DCU,和临时文件删除再编译一次,一般能通过.