Cometi um equívoco! Mandei uma versão antiga da função!

 

Abaixo, a versão correta!

 

{$WRITEABLECONST ON}

const

  WithAccents:   String = 'àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ';

  WithNoAccents: String = 'aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN';

{$WRITEABLECONST OFF}

 

function ReplaceAccents(const s: string): string;

var

  i: integer;

begin

  Result := StringReplace(s, #32, EmptyStr, [rfReplaceAll]);

  for i := 1 to Length(WithAccents) do

    Result :=

      StringReplace(Result, WithAccents[i], WithNoAccents[i],
[rfReplaceAll]);

end;

 

function IsPalindrome(const s: string): boolean; overload;

var

  iIdx: integer;

  lParse: string;

begin

  Result := true;

  lParse := ReplaceAccents(AnsiLowerCase(s));

  for iIdx := 1 to Length(lParse) div 2 do

    if not (lParse[iIdx] = lParse[Length(lParse) - (iIdx - 1)]) then

    begin

      Result := False;

      Break;

    end;

end;

 

function IsPalindrome(const i: integer): boolean; overload;

begin

  Result := IsPalindrome(IntToStr(i))

end;

 

Sds.

 

De: Rubem Rocha [mailto:rubem.ro...@dtmanaus.com.br] 
Enviada em: terça-feira, 12 de maio de 2009 11:22
Para: 'delphi-br@yahoogrupos.com.br'
Assunto: [DICA] Identificação strings palíndromas
Prioridade: Alta

 

{$WRITEABLECONST ON}

const

  WithAccents:   String = 'àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ';

  WithNoAccents: String = 'aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN';

{$WRITEABLECONST OFF}

 

function ReplaceAccents(const s: string): string;

var

  i: integer;

begin

  Result := StringReplace(s, #32, EmptyStr, [rfReplaceAll]);

  for i := 1 to Length(LowerAccents) do

    Result :=

      StringReplace(Result, WithAccents[i], WithNoAccents[i],
[rfReplaceAll]);

end;

 

function IsPalindrome(const s: string): boolean;

var

  lIdx: integer;

  lParse: string;

begin

  Result := true;

  lParse := AnsiUpperCase(ReplaceAccents(lParse));

  for iIdx := 1 to Length(lParse) div 2 do

    if not (lParse[iIdx] = lParse[Length(lParse) - (iIdx - 1)]) then

    begin

      Result := False;

      Break;

    end;

end;

 

Em tempo: um palíndromo é um número ou valor literal que ao ser lido em
sentido contrário (direita para esquerda) tem o mesmo valor se for lido no
sentido normal (esquerda para direita).

 

 

Rubem Nascimento da Rocha

Analista/Desenvolvedor Pleno

Digital Training - Seção de CA

* E-Mail: rubem.ro...@dtmanaus.com.br

þ  Site: http://www.dtmanaus.com.br <http://www.dtmanaus.com.br/> 

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a