Club Delphi  
    Paypal   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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
champy,

Revisa este código:
Código Delphi [-]
Procedure GetDrive(FileName : String);
var
   Driver: Pchar;
   i, Length: Integer;
   SearchFile : Boolean;
   OldErrorMode: word;
   searchResult : TSearchRec;

begin

   OldErrorMode:= SetErrorMode(SEM_NOOPENFILEERRORBOX or SEM_FAILCRITICALERRORS);

   SearchFile := False;
   GetMem(Driver, 100);
   Length := GetLogicalDriveStrings(100, Driver);

   try
      for i := 0 to Length-1 do
      begin
         if GetDriveType(Pchar(Driver[i] + ':\')) = DRIVE_REMOVABLE then
         begin
            if FindFirst(Driver[i] + ':\' + FileName, faArchive, searchResult) = 0 then
            begin
               MessageDlg('Archivo Sincronizado en Medio Removible', mtinformation, [mbok], 0);
               SearchFile := True;
               break;
            end;
         end;
      end;
   finally
      SetErrorMode(OldErrorMode);
      FreeMem(Driver);
      if not Searchfile then
         MessageDlg('Archivo No Sincronizado en Medio Removible', mtinformation, [mbok], 0)
   end;

end;
Esta variante combina dos flags de la función SetErrorMode y utiliza FindFirst para verificar si el archivo esta presente en la unidad.

Espero sea útil

Nelson.
Responder Con Cita
  #2  
Antiguo 10-12-2012
Avatar de champy
champy champy is offline
Miembro
 
Registrado: sep 2003
Ubicación: Alicante, España
Posts: 75
Poder: 23
champy Va por buen camino
Al fin. Funcionó.

La función MicroSDPressent de eficsa me da True cuando la tarjeta está disponible sin sacar el mesajito del sistema.

SetErrorMode no estaba sirviendo de mucho, lo probe con todas las flags, supongo que por que no se trata de una excepcion propiamente dicha, es más bien un "Dialogo del sistema" indicando que la unidad no tiene disco.



En cualquier caso, ya está solucionado

Solo modifiqué la función para que me haga de comprobación de una unidad concreta, y listo, problema resuelto

Código Delphi [-]
function MicroSDPresent(i : char): Boolean;
var
  FName: string;
  Error: LongWord;
  Hnd  : THandle;
begin
 Error := SetErrorMode(SEM_FAILCRITICALERRORS);
  Result:= False;
    if GetDriveType(PChar(i+':\')) = DRIVE_REMOVABLE then
    begin
      FName:= Format('\\.\%s:\%s',[i,'@@@prueba@@@.txt']);
      Hnd:= CreateFile(PChar(FName),
              GENERIC_READ, 0, nil, CREATE_ALWAYS,
              FILE_ATTRIBUTE_NORMAL, 0);
      if Hnd <> INVALID_HANDLE_VALUE then
      begin
        Result := True;
        CloseHandle(Hnd);
        DeleteFile(PChar(FName));
      end;
    End;
  SetErrorMode(Error);
end;

Muchas gracias a todos los interesados, casi me sabe mal por cuanto me habeis ayudado.

Última edición por champy fecha: 10-12-2012 a las 08:09:54.
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
como detecto unidades extraibles desi Internet 2 12-12-2007 15:57:41
De los reproductores de medios AzidRain La Taberna 1 02-08-2007 18:16:55
Detectar Excepcion EconvertError MasterXP Conexión con bases de datos 6 30-03-2005 06:42:55
Toshiba pela al jugador de medios de Windows roman Humor 1 28-03-2005 22:22:02
No puedo detectar la excepción "EDatabaseError" Adan Conexión con bases de datos 8 21-03-2005 20:07:24


La franja horaria es GMT +2. Ahora son las 06:45:14.


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