飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1845|回复: 0

WDosX与Borland Delphi

[复制链接]
  • TA的每日心情
    开心
    2019-9-19 16:05
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2007-2-8 16:30:50 | 显示全部楼层 |阅读模式
    (Delphi for DOS 是基于一个叫WDosX的保护模式扩展器。WDosX扩展器不仅支持Delphi,同时支持C++Builder、TASM、VC++等几乎所有能够生成控制台应用程序的编译器,这里仅译出关于delphi的部分说明,以供参考。            ——FreeWizard)
      WDosX被设计为在dos下执行delphi程序,但并非Turbo Pascal语言,而是基于delphi的Object Pascal语言,像class,exception等都支持。
      无论在纯dos模式还是在windows下的dos方式,WDosX都将仿真Win32API调用,这意味着你可以随心所欲的使用中断和直接写屏幕缓冲区等只有在dos下才能做的事。(FreeWizard:是不是有点兴奋了?^_^)
      使用方法:
      1.编译:dcc32 -cc yourprog.dpr
      2.生成dos执行文件:stubit yourprog.exe (FreeWizard:也可以在IDE的菜单Tools中运行我做的附件:Delphi for DOS)
      当然,你也可以用{$APPTYPE CONSOLE}指示符在IDE中编译,但请别忘了去掉uses子句中的所有窗口单元,连主窗口与FORMS也不例外,否则WDosX抱怨无法注册窗口类、OLE服务和诸如此类,可别怪我。(FreeWizard:如果用了我的“添加剂”,就只要在New中的Projects页上双击Dos Application就行了!)
      你的最终执行文件需要集成Win32API仿真库或者将它们一道发布,这些模块位于BIN目录:kernel32.wdl user32.wdl oleaut32.wdl advapi32.wdl WDL文件就是DLL文件改了扩展名。
      当你使用stubit“加工”你的程序时,stubit会自动在当前目录和stubit.exe所在目录搜索上述模块,并将其与生成文件合并;若未找到则给出警告,你可以用wadd.exe自行添加。
      WDosX 0.95 附带dos与crt单元,并支持Mem与Port仿真数组,不过Mem数组已成为一维线性,例如VGA缓存mem[$A000:0000]应改为mem[$A0000],计算方法: new_offset=old_seg shl 4 + old_offset (FreeWizard:尽管WDosX支持4G寻址,但delphi只支持2G-1大小的数组,不过谁有那么多内存? :P )

      可能出现的问题——

    16位tpu文件无法使用:这是当然。若有源代码可将其编译为dcu文件。
    不支持FPU仿真:没办法,delphi编译器不支持,有些机器(386/486SX/586NX)上只好用软件仿真。
    载入程序时出现“Unsupported dynalink”(不支持的动态连接)后跟一API函数名:这意味着你的程序使用了一个windows支持但WDosX不支持的API调用。
    运行时出现:“EXCEPTION 03”(异常03):这说明你使用了一个我未曾想到的调用,尝试着根据显示的模块名和寄存器值找出问题所在,有时候可能是你的程序引入了一个事实上从未调用过的函数。
    运行时出现其他CPU异常:这未必是你的错误,请先确认你的代码一切正常,再告知我。
    其它问题:尝试用WuDebug解决,祝你好运!
    (FreeWizard:本文译自WDosX0.95文档,更详细的资料请参见WDosX文档和站点http://fwfc.yeah.net
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表