Karbust Posted June 26, 2018 at 07:08 PM Report #611133 Posted June 26, 2018 at 07:08 PM 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
Timóteo nkawa Posted June 26, 2018 at 08:59 PM Report #611134 Posted June 26, 2018 at 08:59 PM 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á!
HappyHippyHippo Posted June 26, 2018 at 09:48 PM Report #611136 Posted June 26, 2018 at 09:48 PM 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 Portugol Plus
Karbust Posted June 26, 2018 at 09:57 PM Author Report #611137 Posted June 26, 2018 at 09:57 PM 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...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now