我有个"001.C"的文件:
#include <stdio.h>
#include <math.h>
const g=10;
main()
{
int a,b,c;
printf("   A= ");
scanf("%d",&a);
printf("   B= ");
scanf("%d",&b);
c=a+b;
printf(" A+B = %d\n",c);
}我现在想用DELPHI来测试该程序代码是否正确..首先我先利用TURBOC的TCC.EXE对"001.C"进行编译.使之生成"001.EXE"可执行文件.我用如下方法:
ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c C:\turboc2\tcc -e001 001.c  >p.txt'), nil, SW_SHOW);
这步可以成功解决了,也可以正确地生成可执行程序"001.EXE".接下来,我要调用"001.EXE"进行测试了.
我把测试数据:1  2  放在input.txt 文件中.想把测试结果的数据放在output.txt文件中.
我用如下方法:
ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c 001  <input.txt >output.txt'), nil, SW_SHOW);
这样,测试数据就不用通过手动从键盘上输入.只要读取input.txt 文件中的测试数据就可以了.
但是用ShellExecute函数时,当001.EXE程序的代码如下时:
#include <stdio.h>
#include <math.h>
const g=10;
main()
{
int a,b,c;
printf("   A= ");
scanf("%d",&a);
printf("   B= ");
scanf("%d",&b);
while (g==10) ;
c=a+b;
printf(" A+B = %d\n",c);
}
由于while (g==10) ;,发生逻辑错误,进入死循环.得用DELPHI程序在一段时间(如2秒)自动结果001.EXE程序.这时用ShellExecute函数就不大方便了.
所以我想用Creatprocess函数来代替
ShellExecute(Handle, 'open', PChar('command.com'), PChar('/c 001  <input.txt >output.txt'), nil, SW_SHOW);
实现同样的功能,并且能够结果001.EXE的死循环问题.有哪位大哥有空能不能帮我实现这个功能,,,感谢万份.不知道我能否把问题描述清楚...如果有不清楚的再说...

解决方案 »

  1.   

    用CreateProcess,然后用WaitForSingleObject函数去等待你运行的进程,下面的你应该明白啦
      

  2.   

    请问怎么将执行程序时的参数带入delphi程序啊?(我是菜鸟)
    我想编写个socket程序,要以 "a.exe 1 2"方式执行,但是我不知道delphi怎么使用外部参数啊?(C有argc,argv什么的)
      

  3.   

    给你个提示
    用辅助线程解决这个问题。
    方法如下1.以Thread类为基类,派生一个线程类,创建线程对象。
    2.在这个辅助线程里,用CreateProcess启动你的程序,然后用WaitForSingleObject函数去等待它结束。这样,主线程不会死掉(挂起)!