当前位置:主页>delphi7/进销存和数据库> 文章内容

如何等待程序操作完毕

发布时间:2010-01-23 | QQ免费站
1楼: 我想做一个程序实现以下功能:用dos命令dir >c:\1.txt或其他DOS命令生成一个TXT文件,然后将他读取到MEMO1中,但问题是经常出现读取错误,原因是文件还未创建,请问如何才能确定DOS程序是否操作完毕? 字串9

2楼: 1.CreateProcess建立一个进程. 2.WaitForSingleObject等待这个进程运行结束. 字串4

3楼: 在cmd命令后面加一个参数 字串6

4楼: 读取前先判断文件是否存在: if FileExists(FileName) then 字串3

5楼: 如果DOS命令要分步往这个TXT中写数据呢?文件可能已经存在,但却无法打开。 多线程我不熟啊,高手给个例子吧

字串9

6楼: 简单: procedure FileExecuteWait(const FileName, Params:string); var si:STARTUPINFO; pi:PROCESS_INFORMATION; begin FillChar(si,SizeOf(STARTUPINFO),0); si.cb:=SizeOf(STARTUPINFO); si.dwFlags:=STARTF_USESHOWWINDOW; si.wShowWindow:=SW_HIDE; if not CreateProcess(nil,PChar(FileName+‘ ‘+Params),nil,nil,False,0,nil,nil,si,pi) then Exit; while WaitForSingleObject(pi.hProcess,50) <> WAIT_OBJECT_0 do ; end; procedure TForm1.Button1Click(Sender: TObject); begin FileExecuteWait(‘cmd.exe /c dir >c:\1.txt‘, ‘‘); with TStringList.Create do try LoadFromFile(‘C:\1.txt‘); ShowMessage(Text); finally Free; end; end; 字串4

7楼: 死定了,没法啊,dos文件不关闭,n线程也没用。其他出路吧,不要和dos程序做交互,除非那个dos程序也是你写的,它在每次向text文件写数据后都关闭数据文件。 字串4

8楼: dir >c:\1.txt /c在借助smokingroom老兄的注意,dos总该关闭文件吧 字串9

9楼: 接受答案了.
字串2