Jump to content
Karbust

Usar continue dentro de um if

Recommended Posts

Karbust

Boas

Estou aqui a tentar usar um if dentro de um if, tipo isto:

                else
                {
                    if (text_login_windows.Text.Length > 20)
                    {
                        int maxLength = Math.Min(text_login_windows.Text.Length, 20);
                        text_login_windows.Text = text_login_windows.Text.Substring(0, maxLength);

                        continue;
                    }

                    string password = Membership.GeneratePassword(12, 1);
                }

Alguém me sabe dizer como posso fazer o código continuar depois de passar dentro do if?

O meu objetivo é se o comprimento for maior que 20 carateres o código reduz para 20 e continua para o resto do código.

Tenho este erro com esse continue; aí:

No enclosing loop out of which to break or continue

Pelo que vi na net não é possível usar isso fora de um loop, alguém me sabe dizer outra maneira de conseguir executar isso?

Obrigado

Share this post


Link to post
Share on other sites
Timóteo nkawa

olá 

a única forma de desviar o fluxo de execução dentro do if é ou chamamos o método que queremos a ser executado depois do if  ou definimos o que queremos que seja executado dentro do bloco if ou depois  dele mas dentro do método onde o bloco if se encontra. nas estruturas de repetições quando queremos que depois da iteração atingir um ponto definido sem necessidade de terminar o círculo e depois repetir mas outro, aí sim podemos usar o continue para que a partir daquele ponto a execução volte ao inicio.

até lá!  

Share this post


Link to post
Share on other sites
HappyHippyHippo

mas queres que faça "continue" para onde ? é que pelo código apresentado ou a explicação não dá para entender.

ps : normalmente, o problema está na má estruturação do código


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Karbust
5 minutos atrás, HappyHippyHippo disse:

mas queres que faça "continue" para onde ? é que pelo código apresentado ou a explicação não dá para entender.

ps : normalmente, o problema está na má estruturação do código

Eu é que sou burro...

Não preciso de lá meter nenhum continue;

Ele faz a verificação e o que tem a fazer e continua...

Esta é o if inicial:

                text_cc.Text = text_cc.Text.ToUpper();

                if(!Funcoes.IsValidCodPostal(text_cod_postal.Text))
                {
                    MessageBox.Show("O código postal inserido não é válido.", "Validação do Código Postal", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                else if(!Funcoes.IsValidEmail(text_email.Text))
                {
                    MessageBox.Show("O email inserido não é válido.", "Validação do Email", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                else if (!Funcoes.IsValidContrib(text_nif.Text))
                {
                    MessageBox.Show("O NIF inserido não é válido.", "Validação do NIF", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                else if (!Funcoes.ValidateNumeroDocumentoCc(text_cc.Text))
                {
                    MessageBox.Show("Tamanho inválido para número de documento.", "Validação do CC", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                
                else if (_ldap.CheckUserinAd(text_login_windows.Text))
                {
                    MessageBox.Show("O login especificado já se encontra registado.\nUse outro endereço de email.", "Validação do Login Windows", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                else
                {
                    if (text_login_windows.Text.Length > 20)
                    {
                        int maxLength = Math.Min(text_login_windows.Text.Length, 20);
                        text_login_windows.Text = text_login_windows.Text.Substring(0, maxLength);
                        _resultadoLoginWindows = text_login_windows.Text;
                    }

                    string password = Membership.GeneratePassword(12, 1);
                    string hash = Funcoes.GenerateRandomHashMd5();

                    string theDate = data_nascimento.Value.ToString("yyyy-MM-dd");

                    Country pais = Countries.GetCountryByActiveDirectoryName(combobox_paises.Text);
                    string countryId = pais.Alpha2.ToString();

                    String[] grupos  = { Configuracoes.Grupofuncionarios };

                    if((_ldap.CreateUserFuncionario(Configuracoes.DominioCompleto, text_primeiro_nome.Text, text_apelido.Text, "Conta criada por: " + LdapFunctions.loggeduser, password, grupos, _resultadoLoginWindows, text_email.Text, text_telemovel.Text, text_morada.Text, text_localidade.Text, text_cod_postal.Text, countryId, false, hash)) && (_mysqlFunctions.CriarContaFuncionario(_resultadoLoginWindows, text_primeiro_nome.Text, text_apelido.Text, theDate, text_morada.Text, text_cod_postal.Text, text_localidade.Text, countryId, text_telemovel.Text, text_email.Text, text_cc.Text, text_nif.Text, hash)))
                    {
                        MessageBox.Show("Registos inseridos com sucesso.");
                    }
                    else
                    {
                        MessageBox.Show("Registo falhado.");
                    }
                }

Está a funcionar tudo bem assim sem o continue;...

Sei que provavelmente o código não é dos mais bonitos, mas é funcional e para a PAP não preciso de fazer algo xpto...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.