Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-04-2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Registrado: mar 2007
Posts: 90
Poder: 18
kapullok_2006 Va por buen camino
Unhappy componente q lee unidades

hiola,tengo este código:
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
var encontradas: boolean;
    n: integer;
begin
     encontradas:= false; //de momento no encuentra ficheros de fotos
 
     if not(encontradas) then
     begin
       FileListBox1.Directory:='G:\';
       directorio:='G:\';
       FilelistBox1.Update;
       if FileListBox1.Items.Count > 0 then
       begin
          Timer1.Enabled:= false;
          encontradas:= true;
          i:= 0;
          RellenarFotos(i);
          cantidades.Clear;
          for n:= 0 to FileListBox1.Items.Count-1 do
          begin
               cantidades.Add('0');
          end;
       end;
     end;
     if not(encontradas) then
     begin
          FileListBox1.Directory:= 'E:\';
          directorio:= 'E:\';
          FilelistBox1.Update;
          if FileListBox1.Items.Count > 0 then
          begin
               Timer1.Enabled:= false;
               encontradas:=true;
               i:= 0;
               RellenarFotos(i);
               cantidades.Clear;
               for n:= 0 to FileListBox1.Items.Count-1 do
               begin
                  cantidades.Add('0');
               end;
          end;
     end;
     if not(encontradas) then
     begin
          FileListBox1.Directory:= 'F:\';
          directorio:= 'F:\';
          FileListBox1.Update;
          if FileListBox1.Items.Count > 0 then
          begin
               Timer1.Enabled:= false;
               i:= 0;
               RellenarFotos(i);
               cantidades.Clear;
               for n:= 0 to FileListBox1.Items.Count-1 do
               begin
                  cantidades.Add('0');
               end;
          end;
     end;
     if not(encontradas) then
     begin
         FileListBox1.Directory:='H:\';
         directorio:='H:\';
         FileListBox1.Update;
         if FileListBox1.Items.Count>0 then
         begin
             Timer1.Enabled:=false;
             i:=0;
             RellenarFotos(i);
             cantidades.Clear;
             for n:= 0 to FileListBox1.Items.Count-1 do
             begin
               cantidades.Add('0');
             end;
         end;
     end;
end;
leerá esta unidad 'G',si está enchufada,pero si no está enchufada da error.
¿Algún componente q lee de lector de tarjetas,USB,grabadora DVD,Blueetooh,...?
ES para leer automáticamente fotos de una SD por ejemplo.

Saludos delfileros.
Responder Con Cita
  #2  
Antiguo 17-04-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Bueno, así de primeras, si hay unidad G:\ las leerá, pero si no hay dará un error el resto del código no se ejecutará.

De todas formas, para lo que lo quieres es un poco raro el código. Lo ideal sería que el programa detectara cuándo se conecta una SD, o un PenDrive, o se introduce un CD/DVD... y buscar en ese unidad.
También deberías comprobar si una cierta unidad (G:\, E:\....) está disponible, si tiene disco....
Otra cosa que podrías hacer sería pasar unidad por unidad, pero no como lo haces (poniendo el código para cada letra), sino con un bucle, que pase primero por D:\, luego por E:\..., incrementando la letra a cada paso.

Si buscas en los foros encontrarás todo lo que necesitas al respecto.

Saludos.

P.D. Una pregunta, ¿el procedimiento de RellenarFotos analiza también los subdirectorios? Lo digo oprque sino sólo leerá las fotos que estén en el directorio raíz.

Última edición por ixMike fecha: 17-04-2007 a las 21:43:28.
Responder Con Cita
  #3  
Antiguo 17-04-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 18
Chris Va por buen camino
Lo mejor que puedes implementar, que sería lo más profesional, sería utilizar los mensajes de windows, utilizando obviamente la api, en algunos casos es fácil, pero investiga talvez no es tan díficil para este caso.

Para el consejo dado por ixMike de ir escaneando cada unidad, es poco profesional, auque lo puedes hacer al momento de iniciar tu aplicación por primera vez, como por ejemplo presentarle al usuario "¿Desea que XXX busque en su PC todas su imágenes?". Bueno, si deseas implementar la busqueda de unidad en unidad, no lo hagas así:

Código Delphi [-]
...
buscarEn('D');
buscarEn('E');
buscarEn('F');
....

mejor haz un bucle con un código similar al siguiente

Código Delphi [-]
UnidadAnalizada := 'C'; //te recomiendo que empieze con "C" porque ya casi nadie utiliza la unidad de la disquera, mejos para fotos.
 
While UnidadAnalizada <> chr(ord('Z')+ 1) Do
Begin
 buscarEn(UnidadAnalizada);
 
 UnidadAnalizada := chr(ord(UnidadAnalizada[1]) + 1);
{lo que hace la línea anterior es aumetar cambiar a la siguiente letra con cada paso del bucle, así luego de procesar la "C" seguirá con la "D", luego con la "E" y así sucesivamente.}
end;

ajola te sirva mi humilde opinión. bye.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web

Última edición por Chris fecha: 17-04-2007 a las 22:13:12.
Responder Con Cita
  #4  
Antiguo 17-04-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
bueno, leer cada cierto tiempo no es optimo sin embargo el codigo se soluciona con un Try..Except para que no de errores o al menos manejarlos si no encuentra la unidad, por aqui eh visto mensajes acerca de monitorear una unidad o directorio por medio de API's dale una buscada eso si seria lo optimo
Responder Con Cita
  #5  
Antiguo 17-04-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
En este tema hablamos sobre como detectar la inserción de una memoria usb
http://www.clubdelphi.com/foros/showthread.php?t=31486
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
Mostrar unidades de Red m8estrella83 Varios 1 06-10-2006 20:09:40
Ayuda con Unidades Jesús Pena API de Windows 1 08-02-2006 23:37:59
Otener unidades de CD/DVD asegurpe Varios 2 28-06-2005 16:09:23
Unidades para OpenGL 1.5 zuriel_zrf Gráficos 0 15-04-2004 17:50:19
Unidades de Tiempo obiwuan Humor 0 06-05-2003 22:32:51


La franja horaria es GMT +2. Ahora son las 00:19:42.


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