Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
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 14-01-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola sonjeux.

Lamento no tener otra versión, pero te adjunto un código que funciona correctamente con Delphi 7 en Windows 64bits, estimo que debería hacerlo del mismo modo en Delphi XE2. Para probarlo, crea una carpeta temporal y descomprimilo allí. (El demo incluye un archivo .txt en la misma carpeta)

Algo importante a tomar en cuenta es que en Windows 64bits la carpeta Windows\System32 es redirigida a Windows\SysWOW64, así que el código:
Código Delphi [-]
 procedure TForm1.btnSystem32Click(Sender: TObject);
begin
  if FileExists('C:\Windows\System32\telnet.exe') then
    ShowMessage('Existe')
  else
    ShowMessage('No existe')
end;
nos va a porfiar con un rotundo "No existe" aunque tengamos seleccionado el archivo desde el explorador de windows y precisamente en esa carpeta ...

La solución mas simple es reemplazar "System32" por el alias "Sysnative" que le indica al sistema de archivos que no debe redirigir el acceso:
Código Delphi [-]
procedure TForm1.btnSysnativeClick(Sender: TObject);
begin
  if FileExists('C:\Windows\Sysnative\telnet.exe') then
    ShowMessage('Existe')
  else
    ShowMessage('No existe')
end;

Saludos
Archivos Adjuntos
Tipo de Archivo: zip sonjeux.zip (4,3 KB, 6 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 14-01-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.465
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
A veces es problema de que el nombre incluye espacios.
Haz una sencilla prueba de acceder a un nombre de fichero sencillo (sin espacios y con pocos caracteres).
Por ejemplo: c:\hola.txt

Descartarás de esa forma que sea por ese problema.

La otra opción más común es que sea por tema de permisos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 14-01-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola sonjeux.

Ampliando el caso de FileExists, se puede encapsular la detección del SO en una función para que trabaje en Win32 y Win64:
Código Delphi [-]
function FileExistsExt(aFileName: TFileName): Boolean;
type
 LPFN_ISWOW64PROCESS = function(hProcess: THandle; var Wow64Proc: BOOL): BOOL; stdcall;
var
  fnIsWow64Proc: LPFN_ISWOW64PROCESS;
  IsWow64: BOOL;
begin
  fnIsWow64Proc:= LPFN_ISWOW64PROCESS(GetProcAddress(GetModuleHandle('kernel32'), 'IsWow64Process'));
  if Assigned(fnIsWow64Proc) then
    fnIsWow64Proc(GetCurrentProcess(), IsWow64);
  if IsWow64 then
    Result:= FileExists(StringReplace(aFileName, 'System32', 'Sysnative', [rfIgnoreCase]))
  else
    Result:= FileExists(aFileName);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-01-2014 a las 12:57:18.
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
Fallo copyfile y fileexists en servicio windows y red Ivanzinho Varios 4 13-08-2013 09:50:59
FileExists() no lee .dll en system32 to_to API de Windows 21 29-05-2013 23:15:11
No me funcionan las teclas de acceso rapido de Delphi Atelio Varios 3 10-05-2013 15:18:13
No me funcionan los recurso para poner delphi en español Durbed Varios 28 20-10-2006 18:14:11
Fileexists sobre una red Kipow Varios 2 26-05-2006 14:57:43


La franja horaria es GMT +2. Ahora son las 13:56:57.


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