caracteres repetidos

Delphi

26/08/2005

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


vlw


Greghowe

Greghowe

Curtidas 0

Respostas

Rjun

Rjun

26/08/2005

Oq especificamente vc quer fazer?


GOSTEI 0
Greghowe

Greghowe

26/08/2005

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


GOSTEI 0
Rjun

Rjun

26/08/2005

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


GOSTEI 0
Rjun

Rjun

26/08/2005

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;



GOSTEI 0
Greghowe

Greghowe

26/08/2005

vlw...


GOSTEI 0
Sandra

Sandra

26/08/2005

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).


GOSTEI 0
Rjun

Rjun

26/08/2005

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?


GOSTEI 0
Greghowe

Greghowe

26/08/2005

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


GOSTEI 0
Andremuller

Andremuller

26/08/2005

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;



GOSTEI 0
POSTAR