Ir al contenido


Foto

Problema al crear carpeta


  • Por favor identifícate para responder
8 respuestas en este tema

#1 ajvdelphi

ajvdelphi

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 20 junio 2012 - 08:55

Hola
Tengo un problema al intentar crear una carpeta con Windows 7, con XP anda bien.

Lo que hago es lo siguiente:

 

delphi
  1. If OpenDialog1.Execute Then
  2.     Begin
  3.       if not DirectoryExists('c:\ProgramasCNC7\Resguardos') then
  4.               if not CreateDir('c:\ProgramasCNC7\Resguardos') then
  5.       ShowMessage('Hubo un problema al crear el directorio de resguardos');
  6.     end;



Y no me lo deja crear, por qué?, soy el usuario administrador y se supone que tengo los priviligios para esto, de hecho si la creo desde Windows funciona.

Saludos
Augusto

  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 20 junio 2012 - 08:57

y si pruebas ejecutando el programa como administrador?

para eso selecinas el programa, click botón derecho mouse y ahí seleccionas ejecutar como administrador
  • 0

#3 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 20 junio 2012 - 09:11

¿Existe la carpeta c:\ProgramasCNC7\?


Saludos.
  • 0

#4 ajvdelphi

ajvdelphi

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 20 junio 2012 - 09:32

y si pruebas ejecutando el programa como administrador?

para eso selecinas el programa, click botón derecho mouse y ahí seleccionas ejecutar como administrador


Voy a intentar  (y)


  • 0

#5 ajvdelphi

ajvdelphi

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 20 junio 2012 - 09:33

¿Existe la carpeta c:\ProgramasCNC7\?


Saludos.


Si existe

  • 0

#6 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 20 junio 2012 - 11:02

Yo tampoco tengo delphi a mano, pero... ¿CreateDir no debería darte un código de error, o bien existe una función para rescatar el último error producido en el SO? No recuerdo el "como" pero creo que se puede, y sería la pista definitiva.

¿Has comprobado los permisos de esa carpeta? Imagino que es la clave, trata de relajar esos permisos a ver, o ejecuta como administrador.

¿No deberías comprobar que el directorio inicial existe Y que el que intentas crear no existe antes de nada? Quizás solo intentes crear lo que ya existe.

Y ya no se me ocurren más tonterias... a ver si alguna te ayuda!

  • 0

#7 ajvdelphi

ajvdelphi

    Newbie

  • Miembros
  • Pip
  • 4 mensajes

Escrito 20 junio 2012 - 11:51

Yo tampoco tengo delphi a mano, pero... ¿CreateDir no debería darte un código de error, o bien existe una función para rescatar el último error producido en el SO? No recuerdo el "como" pero creo que se puede, y sería la pista definitiva.

¿Has comprobado los permisos de esa carpeta? Imagino que es la clave, trata de relajar esos permisos a ver, o ejecuta como administrador.

¿No deberías comprobar que el directorio inicial existe Y que el que intentas crear no existe antes de nada? Quizás solo intentes crear lo que ya existe.

Y ya no se me ocurren más tonterias... a ver si alguna te ayuda!


Hola
CreateDir solo te devuelve True/false según pudo o no pudo crear el directorio, yo le puse primero esta sentencia:



delphi
  1. raise Exception.Create('Hubo un problema al crear el directorio de resguardos');



y directamente se queda colgado ahí  :@

Pero lo que mas me llama la atención que en Xp funciona perfecto.

Saludos
Augusto
(y)





  • 0

#8 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 20 junio 2012 - 12:02

Para obtener el error del sistema:

Mira el truco: Obtener Mensaje de error del sistema.


delphi
  1. ShowMessage(SysErrorMessage(GetLastError));



También mira este truco: Copiar múltiples archivos y carpetas, donde publiqué una función para crear todas las carpetas de una ruta dada aunque no existan. Usa la API de Windows y no la VCL por lo que es posible que te funcione en Win7 aunque no lo recuerdo haber probado en ese S.O.:



delphi
  1. // Crea una carpeta y las subcarpetas de una ruta dada
  2. procedure CreatePath(Path: string);
  3. var
  4.   l, fin: integer;
  5. begin
  6.   l:= Length(Path);
  7.   fin:= 0;
  8.   repeat
  9.     if (Path[fin] = '\') or (l = 0) then
  10.     begin
  11.       if l>0 then Path[fin]:= #0;
  12.       CreateDirectory(PCHAR(Path), 0);
  13.       if l>0 then Path[fin]:= '\';
  14.     end;
  15.     inc(fin); dec(l);
  16.   until (l<0);
  17. end;



Pruébalo y nos comentas.


Saludos.
  • 0

#9 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 566 mensajes
  • LocationEspaña

Escrito 20 junio 2012 - 11:03

También puedes probar con la función "ForceDirectories", que si no existe la ruta la crea.

Puedes ver un ejemplo en http://www.delphibas...orceDirectories

Saludos
  • 0




IP.Board spam blocked by CleanTalk.