Fórum caracteres repetidos #293320

26/08/2005

0

Como faço para controlar caracteres repetidos dentro de uma edit...
ex.: CCC, AAA


vlw


Greghowe

Greghowe

Responder

Posts

26/08/2005

Rjun

Oq especificamente vc quer fazer?


Responder

Gostei + 0

26/08/2005

Greghowe

pretendo travar o usuário de colocar mais de 2 caracteres repetidos... caso ele digite mais de dois Key deve receber #0.


Responder

Gostei + 0

26/08/2005

Rjun

Por exemplo, ele pode digitar 2 vezes a letra ´A´ ou só uma vez ´A´.


Responder

Gostei + 0

26/08/2005

Rjun

Crie uma função para contar o numero de vezes que o caracter informado ocorre dentro do texto.

function Repeticoes(substr, texto: string): integer;
var
  i: integer;
begin
  result := 0;
  for i := 1 to Length(texto) do
    if (texto[i] = substr) then
      result := result + 1;
end;


Depois no evento OnKeyPress coloque o seguinte código:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Repeticoes(Key, Edit1.Text) >= 2 then
    Key := 0;
end;



Responder

Gostei + 0

26/08/2005

Greghowe

vlw...


Responder

Gostei + 0

26/08/2005

Sandra

Sex Ago 26, 2005 2:52 pm
isso mas naum mais que 3 vezes


[b:100240f71b][color=red:100240f71b]Obs.:[/color:100240f71b][/b:100240f71b] Somemte complementando: este tópico com uma resposta do usuário [b:100240f71b]greghowe[/b:100240f71b], pois ao invés de clicar no botão *Responder*, escolheu *Novo tópico* (este *Novo tópico* foi excluído para não dispersar o andamento desta dúvida/problema).


Responder

Gostei + 0

26/08/2005

Rjun

Pelo seu numero de mensagens você deve ser novo no forum. Recomendo você a leitura das Regras de conduta. Não crie tópicos novos para falar sobre um tópico q vc mesmo criou. Se a questão não foi resolvida, permaneça no mesmo tópico.

Agora vamos a questão. Não deve haver repetição em sequencia? Não posso ter AAA mas posso ter ArArA? É isso?


Responder

Gostei + 0

26/08/2005

Greghowe

isto exatamente... os caracteres somente naum podem ser escritos em sequencia.


Responder

Gostei + 0

26/08/2005

Andremuller

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  s1, s2, s3: string;
  iTam: integer;
begin
  iTam := Length(Edit1.Text);
  if iTam >= 2 then
  begin
    s1 := Key;
    s2 := Edit1.Text[iTam];
    s3 := Edit1.Text[iTam - 1];
    if (s1 = s2) and (s2 = s3) then
      Key := 0;
  end;
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar