有位网友提出这样的问题:怎么给Delphi应用程序一个返回码,类似C的exit(-1)
经过尝试,得到结果:
Delphi的处理方式与C/C++有些不同,Delphi中对针对main或是WinMain函数的参数以及返回值的处理是通过system.pas中一些相应的变量及函数实现的。
其中程序的返回值定义在System.pas中的ExitCode.
所以,要想让程序返回值为1,则只需在程序中设置ExitCode := 1;即可。
如下测试代码:
program Project2; {$APPTYPE CONSOLE} uses SysUtils; begin ExitCode :=10 ; end.
对返回值的测试:test.bat
@echo off rem test1.exe 为使用c++写的程序,返回值为33 test1.exe echo test1.exe return %errorlevel% rem project2.exe为上边的代码实现的结果 project2.exe echo project2.exe return %errorlevel%
执行结果:
test1.exe return 33 project2.exe return 10
说明:
本人以前也没有研究这个,但是在看到问题后感觉Delphi应该是可以解决的。于是通过使用debug工具跟踪,如下:
00403595 |. FF15 24904000 |call dword ptr ds:[409024] 0040359B |> 8B06 |mov eax,dword ptr ds:[esi] 0040359D |. 50 |push eax ; /ExitCode 0040359E |. E8 EDDAFFFF |call <jmp.&kernel32.ExitProcess> ; \ExitProcess所以Delphi的程序是有一个全局变量的:ds[esi]
其实这个变量就是ExitCode.