| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
AndersonCamargo10 Novato

Registrado: Segunda-Feira, 5 de Dezembro de 2016 Mensagens: 43
|
Enviada: Ter Mai 09, 2017 7:44 pm Assunto: Ajuda com letras e números em uma string [RESOLVIDO] |
|
|
Olá,
Eu preciso criar uma regrinha que faça o seguinte.
Se uma string possuir Números-Letras tudo bem, se possuir Letras-Números também esta tudo bem... Mas se possuir Números-Letras-Números, misturados ai é tomada uma ação.
exemplo:
1245texto > OK
texto5597 > OK
tex45to77nao88 > Deletar
acdr8tnjk85pnkl477tnd > Deletar
Com os poucos comandos e funções que conheço para tratar string e inteiros não estou conseguindo, se alguém puder me dar uma força com certeza vai ajudar muito mesmo.
Editado pela última vez por AndersonCamargo10 em Qua Mai 10, 2017 4:34 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
AndersonCamargo10 Novato

Registrado: Segunda-Feira, 5 de Dezembro de 2016 Mensagens: 43
|
Enviada: Qua Mai 10, 2017 1:47 am Assunto: |
|
|
| Up! |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Mai 10, 2017 10:18 am Assunto: |
|
|
tente isto:
| Código: | procedure TForm11.CornerButton1Click(Sender: TObject);
var
bLetras, bNumeros: Boolean;
x, iLetras, iNumeros: Integer;
sTexto: String;
begin
bLetras := False;
bNumeros := False;
iLetras := 0;
iNumeros := 0;
sTexto := UpperCase(Edit1.Text);
for x := 1 to Length(sTexto) do
begin
if (sTexto[x] in ['A' .. 'Z']) then
begin
Inc(iLetras);
bLetras := (iNumeros = 0) or (not bLetras);{ then
bLetras := True
else
bLetras := False;}
end
else if (sTexto[x] IN ['0' .. '9']) then
begin
Inc(iNumeros);
bNumeros := (iLetras = 0) or (not bNumeros);{ then
bNumeros := true
else
bNUmeros := False;}
end;
end;
if (bLetras) and (bNumeros) then
ShowMessage('Codigo Válido.')
else
ShowMessage('Código NÁO É VÁLIDO.');
end;
|
_________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Mai 10, 2017 10:24 am Assunto: |
|
|
Mais uma opção:
Função:
| Código: | function PadraoNumLetra(texto: string): Boolean;
var
i, j, c, cont: integer;
aux, padrao: string;
begin
aux := EmptyStr;
padrao := EmptyStr;
cont := 0;
for i := Low(texto) to High(texto) do
begin
val(texto[i], j, c);
if c = 0 then
aux := 'n'
else
aux := 't';
if padrao <> aux then
begin
padrao := aux;
Inc(cont);
end;
end;
Result := cont = 2;
end; |
Exemplo de uso:
| Código: | if PadraoNumLetra(Edit1.Text) then
ShowMessage('Dentro do padrão Letra/Número ou vice-versa.')
else
ShowMessage('Fora do padrão Letra/Número ou vice-versa.'); |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Mai 10, 2017 10:29 am Assunto: |
|
|
| natanbh1 escreveu: | Mais uma opção:
Função:
| Código: | function PadraoNumLetra(texto: string): Boolean;
var
i, j, c, cont: integer;
aux, padrao: string;
begin
aux := EmptyStr;
padrao := EmptyStr;
cont := 0;
for i := Low(texto) to High(texto) do
begin
val(texto[i], j, c);
if c = 0 then
aux := 'n'
else
aux := 't';
if padrao <> aux then
begin
padrao := aux;
Inc(cont);
end;
end;
Result := cont = 2;
end; |
Exemplo de uso:
| Código: | if PadraoNumLetra(Edit1.Text) then
ShowMessage('Dentro do padrão Letra/Número ou vice-versa.')
else
ShowMessage('Fora do padrão Letra/Número ou vice-versa.'); |
|
a sua ficou melhor q a minha rsrsrs _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Mai 10, 2017 10:54 am Assunto: |
|
|
Discordo, joemil. A sua ficou muito boa. A minha ficou um pouco mais enxuta apenas.
Mas acho que ambas podem ajudar o amigo AndersonCamargo10. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
AndersonCamargo10 Novato

Registrado: Segunda-Feira, 5 de Dezembro de 2016 Mensagens: 43
|
Enviada: Qua Mai 10, 2017 12:31 pm Assunto: |
|
|
Oba, muito obrigado amigos pela atenção e dedicação em ajudar.
Eu testei as duas, aqui para mim só funcionou a segunda do natanbh1
A primeira do Joemil está voltando qualquer texto como válido, dei uma revisada tentei algumas mudanças mas não consegui.
A segunda funcionou, o único problema é que não aceita pontos nem o arroba, e como ela vai fazer parte de um setor de validação de email é necessário aceitar pontos e o arroba, se puderem me ajudar neste ultimo detalhe ela ficará perfeita. |
|
| Voltar ao Topo |
|
 |
AndersonCamargo10 Novato

Registrado: Segunda-Feira, 5 de Dezembro de 2016 Mensagens: 43
|
Enviada: Qua Mai 10, 2017 12:54 pm Assunto: |
|
|
Opa! Desculpem o código do
joemil funcionou também eu que tinha errado aqui, então na verdade as duas funcionam, mas tanto a segunda como a primeira não aceitam arroba nem pontos, só falta isso. |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qua Mai 10, 2017 12:54 pm Assunto: |
|
|
Faça um teste alterando a função para:
| Código: | function PadraoNumLetra(texto: string): Boolean;
var
i, j, c, cont: Integer;
aux, padrao: string;
begin
aux := EmptyStr;
padrao := EmptyStr;
cont := 0;
for i := Low(texto) to High(texto) do
if (texto[i] <> '@') and (texto[i] <> '.') then
begin
val(texto[i], j, c);
if c = 0 then
aux := 'n'
else
aux := 't';
if padrao <> aux then
begin
padrao := aux;
Inc(cont);
end;
end;
Result := cont = 2;
end;
|
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
AndersonCamargo10 Novato

Registrado: Segunda-Feira, 5 de Dezembro de 2016 Mensagens: 43
|
Enviada: Qua Mai 10, 2017 4:33 pm Assunto: Ajuda com letras e números em uma string [RESOLVIDO] |
|
|
Oba legal,
A parir deste código eu consegui fazer algumas adaptações e ficou perfeito para o que eu preciso, muito obrigado ajudou de mais. |
|
| Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Mai 10, 2017 5:43 pm Assunto: |
|
|
esta linha:
| Código: | | if (texto[i] <> '@') and (texto[i] <> '.') then |
vc pode mudar para:
| Código: | | if NOT (texto[i] IN ['@', '.']) then |
_________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
| Voltar ao Topo |
|
 |
|