"Runtime error 200"错误信息的原因及解决
由于时代的发展,电脑不断地更新换代,速度也越来越快了。可是一些网友们升级了自己的电脑,在体验电脑更快的速度的同时,却发现原来可以正常运行的程序无法运行了,比如NeoSoft Phantom,WWPack等,启动的时候只显示一行“Runtime error 200”错误信息就退出了。这是怎么回事?该如何解决呢?
原来,这是编译程序的编译器中存在的问题。大家知道,没有任何的程序是完美无缺的,而关键只在于这些程序中的问题是否严重,以及发生的几率等等。如果里面存在一个问题,但它很少发生,以至于没有人发现,那么它就影响不大。然而,如果一个问题出现后就经常发生,而且比较严重,那么情况就不一样了;而有些问题在刚出现的时候并没有发生,也没有人察觉到,但是由于毕竟是一个隐患,可能在以后才会表现出来以造成后果。上面提到的“Runtime error 200”就是后一种情况。
那么这个问题是怎么回事呢?那些发现了此问题的网友由于知道在以前的电脑上并不会出现此问题,于是猜想此问题中电脑的速度(主要是指CPU频率)是使问题出现的一个很重要因素,事实确实如此。经过观察发现,在PII 200MHz左右及以上的电脑下运行这些程序就会出现问题,只出现一条错误信息就停止了启动,而根本无法运行。而这些程序在低于PII 200MHz的电脑下运行则没有问题。
引起此问题的编译器就是Borland (Turbo) Pascal 7.0/7.01(以下简称BP7)。这个问题并不存在于BP7以前的版本(如BP5)中,而仅仅存在于BP7中,这是为什么呢?原来,在BP5中有着另一个问题,那就是用这个编译器编译出来的程序无法在386-33以下电脑下运行。Borland公司为了解决这个问题,进行了一些修复,并增加了一些新的功能,推出了7.0版本。然而此修复却产生了一个更严重的问题的隐患,那就是以上所提到的问题。只不过当时由于电脑的CPU频率还远未达到200MHz,所以无论是Borland公司还是普通的用户或是程序员都没有发现,直到后来随着PII等较快电脑的大量出现,此问题才暴露了出来并造成了影响。经过研究,人们发现此问题产生的根本原因是使用TP7编译器编译出来的程序中的CRT单元中存在错误的时间等待,所以此问题又叫CRT单元问题。
既然如此,要怎样解决这个问题呢?大家知道,由于CRT单元问题产生的条件就是CPU主频要大于200MHz,所以自然会使人联想到用降速的方法来使这些程序来正常运行。不错,这确实是个好办法。因此,许多人推出了这样的降速程序,如CPU Killer等。不过,其中最好的一个是叫作SLOWDOWN的程序(可在“DOS软件”中下载),它是一个现在仍在不断升级中的软件,目前最高的版本是3.0版。它的功能十分强大,命令行选项也非常多,可输入SLOWDOWN /?查看帮助。它不仅可以降DOS的速度,还可以降Windows的速度,当然也可以降Windows中的各个DOS窗口中的速度。一旦用它使速度降到低于200MHz左右,那些程序就可以运行了。而且SLOWDOWN软件运行十分稳定,可以将它加入到AUTOEXEC.BAT中。那么,该如何使用它呢?
其实,它的操作十分简便,有两种操作方式,一种是命令行方式,一种是TSR即内存驻留方式。如果想用前一种方法,例如用SLOWDOWN /P:55 WWPACK命令就可以以55%的速度来运行WWPACK程序。如果想用后一种方法,就直接输入(LH) SLOWDOWN命令将其加载到内存,然后在任何时候按热键就可以调整系统的运行速度,如Ctrl+Alt+4就是40%的速度,Ctrl+Alt+0就是恢复原来的速度。而且这两种方法还可以混合使用,比如在使用TSR方式的同时使用命令行方式以起到临时降速而运行完后即恢复的目的。其实,这些用TP7编译的程序只是在启动的时候会由于速度而无法运行,一旦开始运行就没有问题了,所以可以仅仅在刚开始运行程序的时候降一下速,一开始运行即恢复系统的原速度,以发挥电脑的最大效率,这时仅需按Ctrl+Alt+0组合键。另外,每按一次Ctrl+Alt+加号键可以增加10%的速度,每按一次Ctrl+Alt+减号键可以减少10%的速度等等。可见,一切都可以进行人工控制,多么方便啊!
当然,除了使用降速软件以外,还有另一种很实用的方法。上文提到了CRT单元问题是由TP7产生的有问题的CRT单元引起的,所以如果能用软件将CRT单元修复,那么就可以使这些程序永久性的正常运行。因此,一些人推出了这样的修复工具,如TPP,BP7PAT等,其中BP7PAT可以在“DOS软件”的“文件工具”中下载。例如使用TPP INSTALL.EXE就可以修复INSTALL.EXE文件中的CRT单元,使这个程序可以正常运行。不过,因为有些程序是用一些压缩软件压缩过的,所以需要先对这些软件进行解压(如用UNP,CUP386等工具),然后再进行修复。显然,如果有些软件经过了特殊加密(如WWPack等),无法解开的话,那么这些一次性的修复工具就不适用了。不过还有另一种方法,那就是使用TSR即内存驻留方法,就是先运行一些专门修复此问题的修复工具(如PROT 200),再运行有CRT单元问题的程序。因为那些驻留内存的修复工具能够自动使后面的有CRT单元问题的程序正常运行,而不需修改文件本身。这也不失为一个很好的方法。
不过,解决CRT单元问题的最根本办法就是修复BP7软件本身,这样用它编译的程序就不再会有此问题了。可以修复BP7本身的程序也有一些,这里就不再详细介绍了。
总之,如果用合适的方法,“Runtime error 200”是完全可以解决的。如果您也遇到了“Runtime error 200”的错误信息的话,以上介绍的方法不妨一试。
作者:Wengier