Ver la Versión Completa : Recorrer un STRING
creus
07-01-2007, 21:31:40
Necesito saber como recorrer un string ( previamente sabiendo la longitud de la cadena ( length, creo ) con un While y poder alamacenar una posición del indice en concreto, en una variable.
Gracias a todos.
seoane
07-01-2007, 21:45:08
La forma habitual de recorrer una cadena, al menos para mi, es usar un bucle for
var
i: integer;
s: string;
begin
s:= 'Hola mundo';
for i:=1 to Length(s) do
begin
ShowMessage(s[i]);
end;
end;
Si tiene que ser forzosamente con un bucle while:
var
i: integer;
s: string;
begin
s:= 'Hola mundo';
i:= 0;
while i < Length(s) do
begin
inc(i);
ShowMessage(s[i]);
end;
end;
Incluso podemos usar un repeat
var
i: integer;
s: string;
begin
s:= 'Hola mundo';
i:= 1;
if i <= Length(s) then
repeat
ShowMessage(s[i]);
inc(i);
until i > Length(s);
end;
A partir de ahí, podemos usar toda una serie de métodos a cada cual mas exótico. Por ejemplo:
var
p: PChar;
s: string;
begin
s:= 'Hola mundo';
p:= PChar(s);
while Boolean(P^) do
begin
ShowMessage(Char(P^));
inc(P);
end;
end;
O incluso podemos destruir la cadena según la procesamos
var
s: string;
begin
s:= 'Hola mundo';
while Length(s)>0 do
begin
ShowMessage(s[1]);
delete(s,1,1);
end;
end;
:D Y podriamos continuar asi durante un rato ....
Delphius
07-01-2007, 21:59:55
Necesito saber como recorrer un string ( previamente sabiendo la longitud de la cadena ( length, creo ) con un While y poder alamacenar una posición del indice en concreto, en una variable.
No termino de comprender... para que recorrer el string... si se puede acceder a una posición determinada en forma más simple. Si sólo hay que estraer un solo caracter... pues nos posicionamos en el lugar...
Si bien seoane te respondió... a mi me parece más sencillo algo como:
function Tform1.ExtraerChar(texto: string; Pos: integer): string;
begin
if (Pos > Length(texto)) OR (Pos < 1)
then exit;
result := Texto[pos];
De seguro que ya hay funciones más optimas que la mia... y que ya vienen en Delphi. Hay un amplio apartado de esas: pos, length, delete, etc..
Saludos,
EDITO: tenia un error en el código... antes decia (Pos < 0) y es (Pos < 1)
creus
07-01-2007, 22:52:37
Ok seoane, tenía un pequeño problema de posicionamiento del indice.
Gracias a todos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.