dll如何跳出循环?

CB1013 2019-04-02 03:35:52
BookMark:= DM.mtMember.Bookmark;
try
BookMarkList:= GridMember.SelectedRows;
for i:= 0 to BookMarkList.Count -1 do
begin
DM.mtMember.Bookmark:= BookMarkList[i];
HInst:=LoadLibrary('DoorCard.dll');
try
if HInst >0 then
begin
@ShowDoorfrm:=GetProcAddress(HInst,'ShowDoorfrm');
if @ShowDoorfrm<>nil then
begin
......
end;
end else
ShowMessage('DoorCard.dll文件不存在!');
finally
FreeLibrary(HInst);
end;
end;
finally
DM.mtMember.Bookmark:= BookMark;
end;
问:上面写法dll不能中途退出,如何做到中途退出?
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
doloopcn 2019-04-03
  • 打赏
  • 举报
回复
就如上面说的先加一个状态字BreakOp

不过,就算加了,在For循环中能键盘手工退出的机率并不大,一般都有卡死的状态发生,应该在For循环开始的时候加入:
Application.ProcessMessages
lao_yunger 2019-04-02
  • 打赏
  • 举报
回复
ShowMessage('DoorCard.dll文件不存在!'); 这句就不要了
lao_yunger 2019-04-02
  • 打赏
  • 举报
回复
try if HInst >0 then begin @ShowDoorfrm:=GetProcAddress(HInst,'ShowDoorfrm'); if @ShowDoorfrm<>nil then begin ...... end; end else ShowMessage('DoorCard.dll文件不存在!'); finally FreeLibrary(HInst); if getlasterror()<>0 then raise........ end;
  • 打赏
  • 举报
回复
需要在循环中检查一个退出标志:
BreakOp := false;
for i:= 0 to BookMarkList.Count -1 do
begin
//...
if BreakOp then break;
end;
BreakOp在其他代码中根据条件设置

5,388

社区成员

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

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