Remover letras de uma string

Delphi

11/03/2005

Pessoal, montei o seguinte código para remover as letras de uma string e deixar apenas os números:

texto := ´ENIO123´;
for i := 1 to Length(texto) do
   if not(texto[i] in [´0´..´9´]) then
      Delete(texto,i,1);


O resultado deveria ser: 123 apenas, mas não funciona, oq pode estar acontecendo com esse código.

Abraços,


Eniorm

Eniorm

Curtidas 0

Respostas

Massuda

Massuda

11/03/2005

É problema é que quando você faz o Delete, a string encolhe... então cada vez que o o Length(texto) é avaliado, ele dá um valor menor enquanto o i está sempre crescendo... resultado, o loop termina antes do esperado. Mas se você fizer de trás para frente dá certo:
texto := ´ENIO123´; 
for i := Length(texto) downto 1 do 
   if not(texto[i] in [´0´..´9´]) then 
      Delete(texto,i,1); 



GOSTEI 0
Eniorm

Eniorm

11/03/2005

Mas se você fizer de trás para frente dá certo


Meu camagada... funcionou perfeitamente. E, após sua explicação, meditei sobre o problema e entendi perfeitamente.
Um grande abraço...


GOSTEI 0
Vanessa_d

Vanessa_d

11/03/2005

Faz assim ó...

function FiltraNumeros(S: String): Result;
var
i: integer;
begin
Result := ´´;
for i := 1 to Length(S) do
if S[i] in [´0´..´9´] then
Result := Result + S[i];
end;


GOSTEI 0
POSTAR