Tengo el siguiente código:

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

Lo cual funciona bien, si 'recoger' se encuentra en el campo especificado, entonces ejecuta actEmailPickup si no ejecuta actEmailLivrare .

Me gustaría agregar 2 acciones más para ejecutar, además de estas:

actSendSMSLivrare.Execute

actSendSMSPickup.Execute

Debería ser algo como esto:

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

Desafortunadamente, esto no funciona, devuelve un error relacionado con booleano, ya que soy bastante nuevo, no he podido llegar al fondo de esto.

¿Cómo debería verse mi código final, si es posible hacer esto?

Estoy usando Rad Studio 10 Seattle.

-4
t1f 8 dic. 2016 a las 21:45
2
Pascal necesita un punto y coma entre declaraciones. Además, si desea que actEmailPickup Y actSendSMSPickUp se ejecuten si su primer if ...then es verdadero, deben estar rodeados por un bloque de inicio / fin.
 – 
MartynA
8 dic. 2016 a las 21:55
6
 – 
J...
8 dic. 2016 a las 22:07
1
Documentación. ¿Por qué, oh, por qué no lo leíste?
 – 
David Heffernan
8 dic. 2016 a las 22:14
1
Este tutorial que escribí para InnoSetup podría ayudar, ya que usa la misma sintaxis básica que Delphi.
 – 
Ken White
8 dic. 2016 a las 22:41
1
Su Inglés es bueno. Sin embargo, no leyó la documentación en absoluto.
 – 
David Heffernan
9 dic. 2016 a las 00:09

1 respuesta

La mejor respuesta

Tratar

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

Como dije, Pascal necesita un punto y coma entre las declaraciones y un par de inicio / fin alrededor de ellas si se van a ejecutar como un bloque. actSendSMSPickup.Execute y actSendSMSLivrare.Execute no necesitan punto y coma después de ellos porque el end después de cada uno de ellos no es una declaración, por lo que los execute no necesitan separarse de ellos. .

2
MartynA 8 dic. 2016 a las 21:57
Hola Martyn, gracias por otra gran respuesta. Un pequeño problema, todo se está enviando excepto el actSendSMSLivrare.Execute cuando no se encuentra la recogida. actEmailLivrare se ejecuta, pero no la acción de sms. ¿Algunas ideas?
 – 
t1f
8 dic. 2016 a las 22:10
No importa, acabo de notar un pequeño error tipográfico que tuve en la acción actSendSMSLivrare, lo siento Martyn, todo funciona muy bien ahora, ¡gracias!
 – 
t1f
8 dic. 2016 a las 22:13
Bueno, si lo ha editado exactamente como lo escribí, actSendSMSLivrare.Execute se ejecutará si actEmailLivrare.Execute lo hace. Entonces, si parece que no se ejecuta, coloque un punto de interrupción en actSendSMSLivrare.Execute. Cuando el depurador llegue allí, presione F7 para entrar en su acción; quizás eso muestre por qué no parece estar ejecutándose.
 – 
MartynA
8 dic. 2016 a las 22:16
No, no, fue un problema en el código real de la acción llamada actSendSMSLivrare, lo que provocó que no hiciera nada, mi error, su código funciona bien: D gracias
 – 
t1f
8 dic. 2016 a las 23:57