Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-01-2007
creus creus is offline
Miembro
 
Registrado: sep 2006
Posts: 85
Poder: 18
creus Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 07-01-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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;

Y podriamos continuar asi durante un rato ....
Responder Con Cita
  #3  
Antiguo 07-01-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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)
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 07-01-2007 a las 22:19:29.
Responder Con Cita
  #4  
Antiguo 07-01-2007
creus creus is offline
Miembro
 
Registrado: sep 2006
Posts: 85
Poder: 18
creus Va por buen camino
Ok seoane, tenía un pequeño problema de posicionamiento del indice.

Gracias a todos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al recorrer string creus Varios 6 16-11-2006 22:39:45
Recorrer un pchar Status Quo Varios 23 27-05-2006 19:07:55
Recorrer arreglo Perrero80 Varios 3 18-05-2006 22:52:27
recorrer string emiliu Varios 2 16-11-2005 10:23:25
Recorrer un string davidgaldo Varios 3 09-11-2005 10:04:28


La franja horaria es GMT +2. Ahora son las 10:37:09.


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
Copyright 1996-2007 Club Delphi