Delphi/Pascal if-then-begin和end的正确结构语法;
自从我上一次不得不用帕斯卡语写作以来,已经有大约20年了。在嵌套Delphi/Pascal if-then-begin和end的正确结构语法;,delphi,inno-setup,pascal,pascalscript,Delphi,Inno Setup,Pascal,Pascalscript,自从我上一次不得不用帕斯卡语写作以来,已经有大约20年了。在嵌套if-then块时,我似乎无法正确使用语言的结构元素,使用begin和end。例如,这会给我一个编译器错误“预期标识符” 程序初始化; 开始 日志(“初始化向导”); 如果是艾德米诺格登,那就开始吧 SetupUserGroup(); 其他程序(); else begin(*需要标识符*) 日志('用户不是管理员'); msgbox('当前用户不是管理员',mbInformation,MB_OK); 结束 结束; 结束; 当然,如
if-then
块时,我似乎无法正确使用语言的结构元素,使用begin
和end
。例如,这会给我一个编译器错误“预期标识符”
程序初始化;
开始
日志(“初始化向导”);
如果是艾德米诺格登,那就开始吧
SetupUserGroup();
其他程序();
else begin(*需要标识符*)
日志('用户不是管理员');
msgbox('当前用户不是管理员',mbInformation,MB_OK);
结束
结束;
结束;
当然,如果我删除了if-then
块和与其关联的begin-end
块,那么一切都正常
有时,这种语法是正确的,结果也不错,但嵌套if-then-else
块时,问题就变得更严重了
解决这个问题在这里是不够的。我想更好地理解如何使用这些块。我显然缺少一个概念。一些来自C++或C的东西可能从我的另一部分中渗入,并加深我的理解。我读过几篇关于它的文章,我想我理解它,但我不理解。你必须将每个
开始
与结束
匹配在同一级别,如
if条件然后
开始
剂量测定法;
结束
其他的
开始
做不同的事情;
结束;
如果愿意,可以在不影响放置的情况下缩短使用的行数。(不过,当您第一次习惯语法时,上述操作可能会更简单。)
if条件然后开始
剂量
结束,否则开始
做不同的事情;
结束;
如果您正在执行一条语句,begin..end
是可选的。注意,第一个条件不包含终止代码>,因为您尚未结束语句:
if条件然后
剂量
其他的
做不同的事情;
分号在块中的最后一条语句中是可选的(尽管我通常会在可选时包含分号,以避免在添加行时出现问题,同时忘记更新前一行)
if条件然后
开始
剂量测定法;//此处需要分号
DoSomethingElse;//分号在这里是可选的
完此处需要分号,除非
//下一行是另一个“终点”。
您还可以组合单个和多个语句块:
if条件然后
开始
剂量测定法;
DoSomethingElse;
结束
其他的
做不同的事情;
如果情况如此
剂量
其他的
开始
做不同的事情;
不做任何不同的事情;
结束;
代码的正确用法是:
程序初始化;
开始
日志(“初始化向导”);
如果我是德米兰戈登的话
开始
SetupUserGroup();
其他程序();
结束
其他的
开始
日志('用户不是管理员');
msgbox('当前用户不是管理员',mbInformation,MB_OK);
结束;
结束;
不知何故,我有一个错误的印象,认为else块结束了begin块。。。。我不知道那疯狂的想法是从哪里来的。非常有用,谢谢。@mergage:如果您没有使用begin
,则不需要end
。请参阅上面我的第三个代码示例。非常感谢,我认为这将使我的大脑在这个主题上处于正确的状态。