2016-12-08 2 views
-4

я следующий код:Как добавить больше <если потом еще> заявление

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

Который работает хорошо, если «забрать» находится в указанном поле, то он выполняет 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; 

К сожалению, этого не происходит k, возвращает ошибку, связанную с Boolean, так как я довольно новый, мне не удалось разобраться в этом.

Должен ли мой последний код выглядеть, если это вообще возможно?

Я использую Rad Studio 10 Seattle.

+2

Паскаль нуждается в полуколониях между утверждениями. Кроме того, если вы хотите, чтобы и actEmailPickup AND actSendSMSPickUp выполнялся, если ваш первый 'if ... then' является истинным, их нужно окружить начальным/конечным блоком – MartynA

+6

[... чтение документации помогает] (http: // docwiki.embarcadero.com/RADStudio/en/Declarations_and_Statements_(Delphi)#Structured_Statements) –

+1

Документация. Почему, почему ты не прочитал это. –

ответ

2

Попробуйте

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

Как я уже говорил, Паскаль нуждается в точку с запятой между утверждениями и начать/конец пары вокруг них, если они должны выполнить в виде блока. actSendSMSPickup.Execute и actSendSMSLivrare.Execute не нужны точки с запятой после них, потому что end после каждого из них не является инструкцией, и поэтому execute s не нужно отделять от него.

+0

Привет, Мартин, спасибо за другой отличный ответ. Одна небольшая проблема, все отправляется за исключением 'actSendSMSLivrare.Execute', когда pick up не найден. actEmailLivrare выполняет, но не sms-действие. Есть идеи? – Petzy

+0

Nevermind, я только что заметил небольшую опечатку, которую я имел в действии actSendSMSLivrare, извините за это Мартин, теперь все отлично работает, спасибо! – Petzy

+0

Ну, если вы отредактировали его точно так, как я его написал, 'actSendSMSLivrare.Execute' будет выполняться, если' actEmailLivrare.Execute' делает. Поэтому, если это не выполняется, поставьте точку останова на 'actSendSMSLivrare.Execute'. Когда отладчик достигнет там, нажмите F7, чтобы перейти к вашему действию; возможно, это покажет, почему он, похоже, не выполняет. – MartynA

Смежные вопросы