ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ajuda com letras e números em uma string [RESOLVIDO]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
AndersonCamargo10
Novato
Novato


Registrado: Segunda-Feira, 5 de Dezembro de 2016
Mensagens: 43

MensagemEnviada: Ter Mai 09, 2017 7:44 pm    Assunto: Ajuda com letras e números em uma string [RESOLVIDO] Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
AndersonCamargo10
Novato
Novato


Registrado: Segunda-Feira, 5 de Dezembro de 2016
Mensagens: 43

MensagemEnviada: Qua Mai 10, 2017 1:47 am    Assunto: Responder com Citação

Up!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Mai 10, 2017 10:18 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Mai 10, 2017 10:24 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Mai 10, 2017 10:29 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Mai 10, 2017 10:54 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
AndersonCamargo10
Novato
Novato


Registrado: Segunda-Feira, 5 de Dezembro de 2016
Mensagens: 43

MensagemEnviada: Qua Mai 10, 2017 12:31 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
AndersonCamargo10
Novato
Novato


Registrado: Segunda-Feira, 5 de Dezembro de 2016
Mensagens: 43

MensagemEnviada: Qua Mai 10, 2017 12:54 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Mai 10, 2017 12:54 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
AndersonCamargo10
Novato
Novato


Registrado: Segunda-Feira, 5 de Dezembro de 2016
Mensagens: 43

MensagemEnviada: Qua Mai 10, 2017 4:33 pm    Assunto: Ajuda com letras e números em uma string [RESOLVIDO] Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Mai 10, 2017 5:43 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB