如果让程序只运行一次?

江南愚子 2003-08-20 02:16:08
看到有资料上是如下方法:

procedure TForm1.FormCreate(Sender: TObject);
begin
{搜索数据库看程序是否运行}
if GlobalFindAtom('PROGRAM_RUNNING') = 0 then
{ 假如没有找到,就添加到数据库}
atom := GlobalAddAtom('PROGRAM_RUNNING')
else begin
{ 如果程序已经运行,显示信息并退出程序 }
MessageDlg('程序已经运行!', mtWarning, [mbOK], 0);
Halt;
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
{ 退出程序时,从数据表中删除添加的条目 }
GlobalDeleteAtom(atom);
end;

但我搬过来用时,编译出错,说atom后面需要'(',找帮助也没有对atom的说明。
哪位大虾帮帮忙!
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南愚子 2003-08-20
  • 打赏
  • 举报
回复
不得不承认adoquery8(ado)的方法比我看到的那种方法要好,不过有点高深的说
IORILI 2003-08-20
  • 打赏
  • 举报
回复
const mypro='tmainapp';\\主窗体名
var handle:integer;
begin
handle:=findwindow(mypro,nil);
if handle<>0 then
begin
messagebox(0,'程序正在运行,请退出!','警告!',0);
// halt;
end;
fengjn 2003-08-20
  • 打赏
  • 举报
回复
在你的程序中,定义一个
atom: integer;的私有变量
adoquery8 2003-08-20
  • 打赏
  • 举报
回复
这样:在dpr文件中写入
{$R *.RES}
var
hmutex:hwnd;
ret:integer;
begin
Application.Initialize;
hmutex:=createmutex(nil,false,dpr文件名);
ret:=getlasterror;
if ret<>error_already_exists then
begin
Application.CreateForm(TfrmReceive, frmReceive);
Application.Run;
end
else
begin
Application.MessageBox('该程序已经有一个在运行中!','系统提示',MB_ICONINFORMATION+MB_OK);
releasemutex(hmutex);
end;
end.

当然不要忘了在前面的uses中加上:
Forms,
windows

good luck,hoho...
内容概要:本文档详细介绍了基于直驱永磁同步发电机(PMSG)的1.5MW风力发电系统在Simulink环境下的建模与仿真全过程,涵盖了风力机空气动力学模型、PMSG电磁特性建模、不可控整流与逆变电路、直流环节、空间矢量脉宽调制(SVPWM)技术以及核心控制策略的设计。重点实现了最大功率点跟踪(MPPT)控制以提升风能捕获效率,并构建了电压外环与电流内环协同工作的双闭环控制系统,通过仿真验证了系统在不同风速条件下稳定运行的能力及动态响应性能。; 适合人群:适用于具备电力系统、电机控制理论基础及Simulink仿真操作经验的研究生、科研人员和从事新能源发电系统开发的工程技术人员;特别适合正在进行风电系统建模、控制算法研究或完成相关毕业设计的专业人士。; 使用场景及目标:①深入理解直驱式PMSG风力发电系统的整体架构与工作机理;②掌握从物理部件建模到控制策略实现的完整Simulink仿真流程;③学习并复现MPPT控制、双闭环控制等关键技术方案;④为后续开展低电压穿越、并网稳定性分析、故障诊断等高级课题提供可靠的仿真平台支撑。; 阅读建议:建议结合Matlab/Simulink软件动手实践,逐模块搭建模型,重点关注各控制环节的参数设计与调试方法,同时可参照文中提供的其他风电相关资源进行拓展学习与对比分析。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧