Ver Mensaje Individual
  #4  
Antiguo 10-10-2013
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
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.
Responder Con Cita