【发布时间】:2017-01-14 22:09:16
【问题描述】:
如何用漂亮的循环替换我的菜鸟代码? 我在 form1 上有 32 个计时器,每个计时器每 1 秒运行一次并执行 bat 文件,然后等到 bat 文件完成他的工作并再次运行计时器。
这是图片中的代码
procedure TForm1.Timer1Timer(Sender: TObject);
var nr:string;
begin
nr := '1';
Timer1.Enabled := False;
if g_stop=False then
begin
if FileExists('test'+nr+'.bat') then
begin
ExeAndWait(ExtractFilePath(Application.ExeName) + 'test'+nr+'.bat', SW_SHOWNORMAL);
end;
Timer1.Enabled := True;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var nr:string;
begin
nr := '2';
Timer2.Enabled := False;
if g_stop=False then
begin
if FileExists('test'+nr+'.bat') then
begin
ExeAndWait(ExtractFilePath(Application.ExeName) + 'test'+nr+'.bat', SW_SHOWNORMAL);
end;
Timer2.Enabled := True;
end;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
var nr:string;
begin
nr := '3';
Timer3.Enabled := False;
if g_stop=False then
begin
if FileExists('test'+nr+'.bat') then
begin
ExeAndWait(ExtractFilePath(Application.ExeName) + 'test'+nr+'.bat', SW_SHOWNORMAL);
end;
Timer3.Enabled := True;
end;
end;
【问题讨论】:
-
当然都必须并行工作
-
您的代码图像在这里绝对没用。请参阅this Meta post,了解代码图像不可接受的众多原因列表。此外,您的表单图像也无用;它对这个问题没有任何好处(除非你只是想炫耀你如何整齐地排列所有这些 TTimer 组件)。
-
您要解决什么问题。这不太可能是解决方案。
-
请注意您的代码不是并行运行的,定时器事件是在主线程中触发的。
-
我很好奇批处理文件的作用......将它们的功能直接重写到应用程序本身可能更有意义。或者别的什么,也许。
标签: delphi