【问题标题】:How to add more to <if then else> statement如何向 <if then else> 语句添加更多内容
【发布时间】:2016-12-08 18:45:11
【问题描述】:

我有以下代码:

procedure TForm2.actStareLivratExecute(Sender: TObject);
begin
if dbmodule.comenziDataSetlivrare.AsString = 'pick up' then
actEmailPickup.Execute
else
actEmailLivrare.Execute;
end;

如果在指定字段中找到“pickup”,那么它会执行 actEmailPickup,否则它会执行 actEmailLivrare

除了这些之外,我还想添加 2 个要执行的操作:

actSendSMSLivrare.Execute

actSendSMSPickup.Execute

应该是这样的:

begin
if dbmodule.comenziDataSetlivrare.AsString = 'pick up' then
actEmailPickup.Execute
actSendSMSPickup.Execute
else
actEmailLivrare.Execute
actSendSMSLivrare.Execute;
end;

不幸的是,这不起作用,返回与布尔有关的错误,因为我还很新,我无法深入了解。

如果可能的话,我的最终代码应该是什么样子?

我正在使用 Rad Studio 10 Seattle。

【问题讨论】:

  • Pascal 在语句之间需要一个分号。此外,如果您希望在您的第一个 if ...then 为真的情况下同时执行 actEmailPickup 和 actSendSMSPickUp ,则它们需要被一个开始/结束块包围
  • 文档。为什么哦,你为什么不读呢。
  • This tutorial I wrote for InnoSetup 可能会有所帮助,因为它使用与 Delphi 相同的基本语法。
  • 你的英语很好。不过,您根本没有阅读文档。

标签: delphi if-statement


【解决方案1】:

试试

if dbmodule.comenziDataSetlivrare.AsString = 'pick up' then begin
  actEmailPickup.Execute;
  actSendSMSPickup.Execute
end
else begin
  actEmailLivrare.Execute;
  actSendSMSLivrare.Execute
end;

正如我所说,如果要作为块执行,Pascal 需要在语句之间使用分号并在它们周围使用开始/结束对。 actSendSMSPickup.ExecuteactSendSMSLivrare.Execute 后面不需要分号,因为它们后面的 end 不是一个语句,所以 executes 不需要与之分开。

【讨论】:

  • 嗨 Martyn,谢谢你的另一个好答案。一个小问题,除了actSendSMSLivrare.Execute 找不到取件时,所有东西都在发送。 actEmailLivrare 确实执行,但不是 sms 操作。有什么想法吗?
  • 没关系,我只是注意到我在 actSendSMSLivrare 操作中出现了一个小错字,对此 Martyn 感到抱歉,现在一切正常,谢谢!
  • 好吧,如果你完全按照我写的那样编辑它,actSendSMSLivrare.Execute 将在actEmailLivrare.Execute 执行时执行。因此,如果它似乎没有执行,请在actSendSMSLivrare.Execute 上放置一个断点。当调试器到达那里时,按 F7 进入您的操作;也许这将说明为什么它似乎没有执行。
  • 不不,这是名为 actSendSMSLivrare 的操作的实际代码中的问题,导致它什么也不做,我的错误 - 您的代码工作正常:D 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多