zoukankan      html  css  js  c++  java
  • Delphi程序返回值

    有位网友提出这样的问题:怎么给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.

  • 相关阅读:
    PHP木马免杀的一些总结
    regsvr32 bypass windows defender 新思路
    要点4:C的文件操作
    【Go语言探险】线上奇怪日志问题的排查
    Eclipse部署虚拟项目目录
    osgEarth使用笔记4——加载矢量数据
    three.js中的矩阵计算
    GDAL数据集写入空间坐标参考
    matlab 基础
    nginx 配置文件解读
  • 原文地址:https://www.cnblogs.com/hydonlee/p/1454998.html
Copyright © 2011-2022 走看看