Ver Mensaje Individual
  #8  
Antiguo 14-06-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Reputación: 20
cHackAll Va por buen camino
Cool No problem

Cita:
Empezado por JuanErasmo
...pero tengo un problema grave,,,,
Manejo C++ Builder, y me da mucha dificultad traducir tu codigo,,,,
Creo que ya me quedo claro con tu segundo post amigo!

Cita:
Empezado por JuanErasmo
...podrias ayudarme? o sera mucho pedir??...
Aunque me parece un poco agrasivo tu comentario, hare lo que pueda pues yo programo en Delphi y bueno al grano; encontre un foro que tiene parte de lo que necesitas... y la otra que necesitas esta acá. Yo se que no entenderas todo lo escrito en el foro, pero intenta comparar el código con el que yo hice en Delphi... las APIs son las mismas.

Ahora te explico un poco: es como si hicieras DIR, (te explico así pues es un idioma que estoy seguro ambos entenderemos), la lista de este dir la guardas en un TStrings que es un vector de cadenas. Hecho esto esperas a que el WaitForSingleObject se dispare con un cambio en el directorio, cuando ésto sucede vuelves a usar la API FindFirstFile, FindNextFile, etc... pero en ves de llenar los nombres en la lista, buscas los nombres, borras, los items que ya existan, y los que no los añades (en la misma lista claro).

Código Delphi [-]
var List: TStrings; // Es el vector de cadenas
 
var Handle: Cardinal; Index: Integer; FindData: TWin32FindData; // declaracion de variables
begin
 List.Clear;  // Limpio la lista
 Handle := FindFirstFile(PChar(Path + '\*.*'), FindData); // Inicias el listado
 repeat
  if (FindData.cFileName <> '.') and (cFileName <> '..') then // Si el nombre encontrado no es '.' ni '..'
   List.Add(FindData.cFileName);                                         // Lo añado en la lista
 until not FindNextFile(Handle, FindData);        // repito hasta que la API FindNextFile me diga que ya no hay archivos
 FindClose(Handle);  // y cierro la busqueda
end;

Lo anterior crea la lista... lo otro no es muy diferente:

Código Delphi [-]
begin
 Handle := FindFirstFile(PChar(Path + '\*.*'), FindData); // Inicias el listado
 repeat
  if (FindData.cFileName <> '.') and (cFileName <> '..') then // Si el nombre encontrado no es '.' ni '..'
   begin
    Index := List.IndexOf(FindData.cFileName);  // a la variable Index le asigno la posicion en mi lista
    if Index <> -1 then // cuando NO es -1, significa que existe en la lista, entonces
     List.Delete(Index)  // lo borro
    else   // caso contrario
     List.Add(FindData.cFileName); // Lo agrego
   end;
 until not FindNextFile(Handle, FindData);
 FindClose(Handle);
end;

Lo que hice es borrar los que ya existian, y añadir los nuevos... me quedan todos los cambios en la estructura del directorio que queremos ver.

Espero sea mas iluminador en este post, ademas las APIs se repiten y es muy parecido con el Delphi...

PD: Me gustaria que lo pruebes al Delphi!

Suerte
Responder Con Cita