if com duas condições, caso a primeira condição seja verdadeira executar o procedimento

09/07/2010

0

Olá pessoal.
Caso eu tenha um if com duas condições, existe a possíbilidade de ele verificar se a primeira condição for verdadeira, ele já executa o solicitado, somente se a primeira condição não for verdadeira ele verifica a segunda. Segue abaixo um exemplo:

if ((not(FileExists(vFilePath))) or (Application.MessageBox('Já existe um arquivo com esse nome!' + #13 + 'Deseja sobrescrever?', 'Pergunta', MB_ICONQUESTION + MB_YESNO) = mrYes)) then
   begin
      //Executa procedimento
   end;


Caso o arquivo não exista ele executa o procedimento, sem fazer a pergunta. Somente se o arquivo existir, ele irá fazer a pergunta se deseja sobreescrever o arquivo..

ps.: Sei que é possível fazer isso com if encadeado (como eu fiz), mas gostaria de saber se é possível fazer dessa forma.
Breno Oliveira

Breno Oliveira

Responder

Post mais votado

10/07/2010

Olá pessoal.
Caso eu tenha um if com duas condições, existe a possíbilidade de ele verificar se a primeira condição for verdadeira, ele já executa o solicitado, somente se a primeira condição não for verdadeira ele verifica a segunda. Segue abaixo um exemplo:

if ((not(FileExists(vFilePath))) or (Application.MessageBox('Já existe um arquivo com esse nome!' + #13 + 'Deseja sobrescrever?', 'Pergunta', MB_ICONQUESTION + MB_YESNO) = mrYes)) then
   begin
      //Executa procedimento
   end;


Caso o arquivo não exista ele executa o procedimento, sem fazer a pergunta. Somente se o arquivo existir, ele irá fazer a pergunta se deseja sobreescrever o arquivo..

ps.: Sei que é possível fazer isso com if encadeado (como eu fiz), mas gostaria de saber se é possível fazer dessa forma.
  Mas o compilador do Delphi ja é Otimizado para isto...   Pelo menos no Delphi2010   Veja  
var
condicao:Boolean;
begin
condicao:=StrToBool(edit1.text);
 if ((not(Condicao)) or (Application.MessageBox('Já existe um arquivo com esse nome!' + #13 +
    'Deseja sobrescrever?', 'Pergunta', MB_ICONQUESTION + MB_YESNO) = mrYes)) then
      Showmessage('Executa somente se Condicao=True');
  Neste pequeno exemplo se o Conteudo do Edit for igual a False >>not(Condicao) ja Retorna Positivo e não Ira nen testar a Segunda que no Caso é a Mensagem   Somente se Conteudo do Edit for igual a True >> not(Condicao) j Retorna False e ai Ira Exibir a Pergunta   Teste ai...

Marco Salles

Marco Salles
Responder

Mais Posts

15/07/2010

Pedro Saraiva.

Programa com códigos fontes Ola pessoal, você programador que quer um aplicativo exemplo para fins comerciais, tenho uma dica, compre o WinPhar que vem com todos os códigos fontes e faça um programa baseado nele, sim ele também vêm com todos os componentes para instalar, voce além de ganhar um programa complidao, ganha tb os seus códigos fontes e seus componentes. O programa foi desenvolvido em Delphi 7 com banco de dados paradox, e custa apenas 20,00 reais
deem uma olhadinha ai no produto
http://produto.mercadolivre.com.br/MLB-149256966-winphar-2008-sistema-para-farmacias-e-drogarias-_JM
e ente em contato pelo e-mail pedroluissaraiva@yahoo.com.br.!  
Responder

06/01/2023

Dorgival Gama

Olá pessoal.
Caso eu tenha um <SPAN style="FONT-WEIGHT: bold">if</SPAN> com duas condições, existe a possíbilidade de ele verificar se a primeira condição for verdadeira, ele já executa o solicitado, somente se a primeira condição não for verdadeira ele verifica a segunda. Segue abaixo um exemplo:

if ((not(FileExists(vFilePath))) or (Application.MessageBox('Já existe um arquivo com esse nome!' + #13 + 'Deseja sobrescrever?', 'Pergunta', MB_ICONQUESTION + MB_YESNO) = mrYes)) then
   begin
      //Executa procedimento
   end;


Caso o arquivo não exista ele executa o procedimento, sem fazer a pergunta. Somente se o arquivo existir, ele irá fazer a pergunta se deseja sobreescrever o arquivo..

ps.: Sei que é possível fazer isso com if encadeado (como eu fiz), mas gostaria de saber se é possível fazer dessa forma.

<DIV> </DIV>
<DIV>Mas o compilador do Delphi ja é Otimizado para isto...</DIV>
<DIV> </DIV>
<DIV>Pelo menos no Delphi2010</DIV>
<DIV> </DIV>
<DIV>Veja</DIV>
<DIV> </DIV>
<DIV>
</DIV>
<DIV>var
condicao:Boolean;
begin
condicao:=StrToBool(edit1.text);
 if ((not(Condicao)) or (Application.MessageBox('Já existe um arquivo com esse nome!' + #13 +
    'Deseja sobrescrever?', 'Pergunta', MB_ICONQUESTION + MB_YESNO) = mrYes)) then
      Showmessage('Executa somente se Condicao=True');
</DIV>
<DIV> </DIV>
<DIV>Neste pequeno exemplo se o Conteudo do Edit for igual a False >>not(Condicao) ja Retorna Positivo e não</DIV>
<DIV>Ira nen testar a Segunda que no Caso é a Mensagem</DIV>
<DIV> </DIV>
<DIV>Somente se Conteudo do Edit for igual a True >> not(Condicao) j Retorna False e ai
<DIV>Ira Exibir a Pergunta</DIV>
<DIV> </DIV>
<DIV>Teste ai...</DIV></DIV>


Olá sei que é um tópico bem antigo mais fiquei curioso quanto a variável boolean receber o valor do edit, fiz um teste aqui e não funcionou, retorna um erro que não é um valor booleano válido.
Responder

09/01/2023

Arthur Heinrich

É possível fazer o if com múltiplas condições, de forma que, ao checar as condições, caso uma avaliação parcial da expressão garanta o resultado, ela seja interrompida. Até acho que este é o comportamento "default".

Porém, você pode configurar o compilador para que as expressões booleanas sejam interpretadas na íntegra, fazendo com que a pergunta seja sempre executada.

Para o seu objetivo, certifique-se de que a opção "Complete Boolean Evaluation" esteja desmarcada.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar