Ver Mensaje Individual
  #5  
Antiguo 10-10-2013
Avatar de ZayDun
ZayDun ZayDun is offline
Miembro
 
Registrado: mar 2007
Posts: 129
Reputación: 18
ZayDun Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
El problema que tienes es que lo recorres hacia adelante.
Deberías recorrerlo hacia atrás (si utilizas FOR...DO).
Código Delphi [-]
Var
   Time : String;
   i : integer
Begin
   Time := Memo1.Lines.Text;

   // Datos a extraer del memo duracion = 12:25"
   for i:= Memo1.Lines.Count-1 downto 1 do
      If Pos('duracion=',Time) > 0 Then
      Begin
         Delete (Time,1,Pos('duracion="', Time) + 8);
         Delete (Time, Pos ('"', Time), MaxInt);
         Memo2.Lines.Add(Time);
      End;

El problema es que recorres la lista según el índice
Si encuentras, borras el elemento en la posición del indice. Esto hace que todo lo que le sigue "caiga" una posición.
Luego el FOR avanza el indice y esa posición ya no la has tratado.

Deberías hacerlo con un WHILE e incrementar el índice solo si no encuentras lo que buscas.

Gracias por tu explicación, estoy intentando mediante WHITE, pero la verdad que estoy dando muchas vueltas y aunque he visto varios ejemplos no me queda claro como utilizarlo.

Código Delphi [-]
While i <= Memo1.Lines.Count-1 do //??
begin
...
End;
Responder Con Cita