Ir para conteúdo
Fórum Script Brasil
  • 0

Problema Com If No Meu Programa! Ajuda Por Favor!


schaukoski

Pergunta

Olá

Meu Programa está apresentando os seguintes erros, antes de compilar.

procedure TForm1.Button1Click(Sender: TObject);

begin

usuariologado := Combobox1.text;

if (dmData.atlogins.Locate('Senha', maskedit1.text, [loCaseInsensitive])) then

if (combobox1.text) = dmData.atlogins.FieldByname('Nível').asstring then

begin

if combobox1.text = 'ADMINISTRADOR' then

begin

Form1.Hide;

Form1.Hide;

FormADM.SHowmodal;

Close;

end

end;

if combobox1.text = 'RECEPCIONISTA' then

begin

Form1.Hide;

Form1.Hide;

FormREC.SHowmodal;

Close;

end

end;

(64) if combobox1.text = 'ENTREGADOR' then

begin

Form1.Hide;

Form1.Hide;

FormENT.SHowmodal;

(69) Close;

end

(71) end;

end

else

if (combobox1.text = '') and (maskedit1.text = '') then

label3.caption := ' * Usuário e Senha em BRANCO *'

end;

begin

label3.caption := ' * Nível de acesso incompatível com usuário *';

combobox1.Text := '';

combobox1.SetFocus;

end

else

begin

label3.Caption := ' * SENHA INCORRETA * ';

maskedit1.Text := '';

maskedit1.setfocus;

end

end;

end.

**** ERROS >[Error] Unit1.pas(64): Declaration expected but 'IF' found

[Error] Unit1.pas(69): '(' expected but ';' found

[Error] Unit1.pas(71): '.' expected but 'END' found

não consegui por os espacos, esse forum junta os espacos fiko meio confuso de ver =/

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Meu amigo, poste código sempre dentro de uma caixa de código pra agente poder vizualizar os blocos.

O erro está na linha 62, tire esse end.

Porque assim ele considera o end da linha 63 como sendo fim do procedimento.

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Ah sim Obrigado

procedure TForm1.Button1Click(Sender: TObject);
begin
usuariologado := Combobox1.text;
  if (dmData.atlogins.Locate('Senha', maskedit1.text, [loCaseInsensitive])) then
    begin
      if (combobox1.text) = dmData.atlogins.FieldByname('Nível').asstring then
          begin
            if combobox1.text = 'ADMINISTRADOR' then
              begin
                Form1.Hide;
                FormADM.SHowmodal;
                Close;

            end;
            if combobox1.text = 'RECEPCIONISTA' then
              begin
                Form1.Hide;
                FormREC.SHowmodal;
                Close;

            end;
            if combobox1.text = 'ENTREGADOR' then
              begin
                Form1.Hide;
                FormENT.SHowmodal;
                Close;

            end



      else
      begin
      label3.caption := ' * Nível de acesso incompatível com usuário *';
      combobox1.Text := '';
      combobox1.SetFocus;
      end
      end

    else
    begin
    label3.Caption := '                 * SENHA INCORRETA * ';
    maskedit1.Text := '';
    maskedit1.setfocus;
    end
  end;
end;
end.

Thales. tenho uma pergunta

Não está funcionando os ELSE do final

se eu coloko um conteudo falso no primeiro if, ele deveria mostrar SENHA INCORRETA, mas na acontece nada... ele não esta executando..? porque eu testei esse mesmo else ele funcionava, e agora não está mais =/

o que tem de errado?

quando eu executo inclusive, fica akelas bolinhas azuis do lado, dos comandos, dizendo que esta executando mas não tá não...

tem algo errado?

Link para o comentário
Compartilhar em outros sites

  • 0

nessa parte do código ->

if combobox1.text = 'ENTREGADOR' then
              begin
                Form1.Hide;
                FormENT.SHowmodal;
                Close;

            end

está faltando ; no end.

e está faltando outro end (sem ponto e vírgula) depois dele.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá schaukoski,

Alem do ; que o Thales falou falta outro end antes do else, e tirar um end do final

Deixar um código bem arrumadinho e bem organizado é sempre bom, até mesmo pra encontra erros.

procedure TForm1.Button1Click(Sender: TObject);
begin
  usuariologado := Combobox1.text;
  if (dmData.atlogins.Locate('Senha', maskedit1.text, [loCaseInsensitive])) then begin
     if (combobox1.text) = dmData.atlogins.FieldByname('Nível').asstring then begin
        if combobox1.text = 'ADMINISTRADOR' then begin
           Form1.Hide;
           FormADM.SHowmodal;
           Close;
        end;
        if combobox1.text = 'RECEPCIONISTA' then begin
           Form1.Hide;
           FormREC.SHowmodal;
           Close;
        end;
        if combobox1.text = 'ENTREGADOR' then begin
           Form1.Hide;
           FormENT.SHowmodal;
           Close;
        end;
     end else begin
        label3.caption := ' * Nível de acesso incompatível com usuário *';
        combobox1.Text := '';
        combobox1.SetFocus;
     end;
  end else begin
     label3.Caption := '                 * SENHA INCORRETA * ';
     maskedit1.Text := '';
     maskedit1.setfocus;
  end;
end;

Abs. Progr'amador.

Link para o comentário
Compartilhar em outros sites

  • 0

     if (combobox1.text) = dmData.atlogins.FieldByname('Nível').asstring then begin
        if combobox1.text = 'ADMINISTRADOR' then begin
           Form1.Hide;
           FormADM.SHowmodal;
           Close;
        end;
        if combobox1.text = 'RECEPCIONISTA' then begin
           Form1.Hide;
           FormREC.SHowmodal;
           Close;
        end;
        if combobox1.text = 'ENTREGADOR' then begin
           Form1.Hide;
           FormENT.SHowmodal;
           Close;
        end;
     end else begin
schaukoski, uma palavrinha(dica) sobre esta parte do código... Observe que após validar o if inicial, você faz três testes com o mesmo componente, mesmo que o primeiro já seja verdadeiro. A estrutura lógica implementada ficaria melhor se você a utilizasse da mesma forma que você pensa nela. Vejamos:
Se Text for igual a Administrador então faço
início do bloco
 - oculto o Form1
 - mosto o FormADM
 - fecho este form
fim do bloco
senão for, verifico Se Text for igual a Recepcionista então faço
início do bloco
 - oculto o Form1
 - mosto o FormREC
 - fecho este form
fim do bloco
senão for, verifico Se Text ...
Para isto você deveria introduzir o ELSE.
     if (combobox1.text) = dmData.atlogins.FieldByname('Nível').asstring then begin
        if combobox1.text = 'ADMINISTRADOR' then begin
           Form1.Hide;
           FormADM.SHowmodal;
           Close;
        end
        else if combobox1.text = 'RECEPCIONISTA' then begin
           Form1.Hide;
           FormREC.SHowmodal;
           Close;
        end 
        else if combobox1.text = 'ENTREGADOR' then begin
           Form1.Hide;
           FormENT.SHowmodal;
           Close;
        end;
     end else begin
Agora, se o primeiro teste resultar em verdadeiro, não será feito (desnecessariamente) o segundo e terceiro testes. Isto faz diferença quando se utiliza muitos if's, e deixa seu código mais lógico. ;) Outra coisa. Se está tratando todas as opções possíveis (as 3 implementadas) para o resultado do seu if inicial (teste do nível), então você pode ainda fazer uma otimização do código evitando repetição. Observe que para qualquer uma das 3 opções que você avalia, você inicialmente oculta o Form1 e, após mostrar o Form adequado à opção, fecha o Form "atual". Bom. Se, como sugerí antes, você estiver tratando todas as opções possíveis, então você poderia simplificar para esta forma:
procedure TForm1.Button1Click(Sender: TObject);
begin
  usuariologado := Combobox1.text;
  if (dmData.atlogins.Locate('Senha', maskedit1.text, [loCaseInsensitive])) then begin
     if (combobox1.text) = dmData.atlogins.FieldByname('Nível').asstring then begin
        Form1.Hide;
        if combobox1.text = 'ADMINISTRADOR' then
           FormADM.SHowmodal;
        else if combobox1.text = 'RECEPCIONISTA' then 
           FormREC.SHowmodal;
        else if combobox1.text = 'ENTREGADOR' then 
           FormENT.SHowmodal;
        Close;
     end else begin
        label3.caption := ' * Nível de acesso incompatível com usuário *';
        combobox1.Text := '';
        combobox1.SetFocus;
     end;
  end else begin
     label3.Caption := '                 * SENHA INCORRETA * ';
     maskedit1.Text := '';
     maskedit1.setfocus;
  end;
end;

[]s

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...