Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 12
MaMu Va por buen camino
Problema con StringList

Resulta que cuento los subdirectorios que hay en un directorio, utlizando el siguiente procedimiento, al cual le agregue un StringList, para almacenar los nombres de los directorios que cuenta:

Código Delphi [-]
var Lista: TStrings;
 
...
 
function NumeroSubDirectorios(directorio: string;
   ocultos, sistema, soloLectura: boolean) : integer;
 var
   SR: TSearchRec;
   atributos: Cardinal;
 begin
    Lista:=TStringList.Create;
    Lista.Clear;
   Result := 0;
   atributos := faDirectory;
   if ocultos then atributos := atributos or faHidden;
   if sistema then atributos := atributos or faSysFile;
  // if soloLectura then atributos := atributos or faReadOnly;
   directorio := IncludeTrailingPathDelimiter(directorio);
   if FindFirst(directorio +'*', atributos, SR) = 0 then
   begin
     repeat
       if (SR.Name <> '.') and (SR.Name <> '..')
         and DirectoryExists(directorio + SR.Name)
         then begin
           Inc(Result);
           Lista.Add(SR.Name);
         end
     until FindNext(SR) <> 0;
     SysUtils.FindClose(SR);
   end;
 end;

Pero cuando quiero ir al ultimo elemento de la siguiente manera...

Código Delphi [-]
...
if Lista.Count>0
    then begin
       ShowMessage(IntToStr(Lista.Count)+' - '+Lista.String[Lista.Count-1]);
    end;
  end;
...

Siempre me muestra el primer elemento. Porque? que hago mal?

Saludos y Gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 26-05-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 449
Poder: 12
xEsk Va por buen camino
He probado tu codigo, aparte de un pequeño error con el ejemplo que has puesto, me funciona bien, muestra el ultimo elemento añadido:

Código Delphi [-]
if Lista.Count > 0 then 
  ShowMessage(IntToStr(Lista.Count) + ' - ' + Lista[Lista.Count-1]);
Responder Con Cita
  #3  
Antiguo 26-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 22
Lepe Va por buen camino
Lista es una variable global, cada vez que se ejecute el procedimiento, se crea una nueva en memoria, y la anterior se queda inaccesible, dicho de otro modo, perdida en la memoria RAM.

No uses TStringList.Create al inicio del procedimiento, úsalo, por ejemplo, al crear la ventana y destrúyelo al cerrar dicha ventana.

Para acceder a un elemento, siempre he usado Lista[Lista.Count-1]);

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Problema longitud stringlist.text Bicho OOP 2 12-03-2007 14:12:52
Saltos de linea con stringlist JuanHC Internet 2 30-10-2006 12:25:13
Llenar datos en StringList Caro OOP 2 12-11-2005 18:20:57
Recorrer un StringList bustio Varios 2 27-02-2005 20:50:21
Limite del StringList victork_py Varios 8 11-05-2004 23:19:11


La franja horaria es GMT +2. Ahora son las 23:15:15.


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