Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recorrer un STRING (https://www.clubdelphi.com/foros/showthread.php?t=38996)

creus 07-01-2007 21:31:40

Recorrer un STRING
 
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
Código Delphi [-]
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:
Código Delphi [-]
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
Código Delphi [-]
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:
Código Delphi [-]
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
Código Delphi [-]
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

Cita:

Empezado por creus
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:

Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 06:18:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi