我想先在c:\下生成个aa.txt,再判断它生成了吗? 生成了就打开它。但这样写后为什么显示:‘cannot open file c:\aa.txt'? 看到c:\下的aa.txt已经存在了啊?  winexec(pchar('command.com /c ipconfig /all >c:\aa.txt'),sw_hide);  while not fileexists('c:\aa.txt') do
  begin
    for i:= 1 to 100 do ;
  end;  memo1.Lines.LoadFromFile('c:\aa.txt');

解决方案 »

  1.   

    加入ShellAPI
    ShellExecute(Handle, nil, Pchar('command.com'), Pchar('/c ipconfig /all >c:\aa.txt'), nil, sw_hide);
    用它把winexec换掉
      

  2.   

    大哥,用shellexecute也是一样的啊,这个文件完全写入磁盘不知用什么能判断出来?
      

  3.   

    经测试,问题其实是出现在文件生成并保存到磁盘的环节上
    很显然,当执行memo1.Lines.LoadFromFile('c:\aa.txt');时,虽然判断文件已存在,但实际上并没有保存到磁盘,所以loadfromfile会出错解决方法:
    while not fileexists('c:\aa.txt') do
    begin
      sleep(5000);
    end;更改为如上即可.
      

  4.   

    谢谢小新,是这样的
    但现在更深入的我想执行一条ipconfig /renew > c:\aa.txt时,根据不同时间段,不同地点这句执行的时间短的几秒,长的二分钟。设sleep就不大理想了,不知有没办法能好的解决?
      

  5.   

    在执行代码 memo1.Lines.LoadFromFile('c:\aa.txt') 时,command.com还没有运行完成,也就是说文件还是打开的,所以loadfromfile失败。简单的解决办法,就是在load之前加入延时。
      

  6.   

    winexec执行完成后返回值是什么,有没有一个执行完成的标志,如果有可以考虑用这个标志来判断