PDA

Ver la Versión Completa : Como crear una carpeta


fdoterre
09-01-2007, 17:40:19
hola les queria pedir si me podian decir comopuedo crear una carpeta de forma automatica sin que el usuario la tenga que crear, es para almacenar la clave de un programa, quiero que el archivo de la clave quede dentro de esa carpeta.

dec
09-01-2007, 17:42:30
Hola,


CreateDir('C:\nueva carpeta');

Bicho
09-01-2007, 17:43:24
Hola,

tan fácil como ésto:


uses Sysutils;

...

procedure CreaDirectorio(nombredir : String);
begin
if not DirectoriExists(nombredir) then CreateDir(nombredir);
end;


Espero te sirva.

Saludos

EDITO: Se me ha adelantado David, ojo por ojo... :p

dec
09-01-2007, 17:51:19
Hola,

Donde las dan las toman... :D :D

Por cierto... al cabo "CreateDir" termina usando (en Windows) la función "CreateDirectory", que también podríamos usar nosotros directamente:


if not CreateDirectory(PChar('C:\Nueva carpeta'), nil) then
ShowMessage(SysErrorMessage(GetLastError));

jymy788
03-09-2007, 20:03:54
Por seguir con el hilo, CreateDir y CreateDirectory, que hacen lo mismo, no permite crear directamente la estructura de directorios de forma "recursiva", es decir, si yo hago CreateDir(PChar('c:\temp\kk')); no se crea el directorio C:\Temp\kk directamente.

Hay que programarse esto o hay alguna función extendida que lo haga

Saludos y perdón por la ignorancia

Gracias

dec
03-09-2007, 20:06:50
Hola,


Hay que programarse esto o hay alguna función extendida que lo haga


Creo que hablamos de ello esta mañana en otro Hilo. La función que buscas es "ForceDirectories" y se encuentra en la unidad "SysUtils.pas".

jymy788
03-09-2007, 20:13:40
eres un crack DEC.

Yo no participé en el hilo que comentas pero bueno, ya he aprendido algo más.

Solo me queda una cosa que preguntar:

Si yo hago lo siguiente


fileDir := 'c:\temp\kk';
CopyFile('aplicacion.exe', PChar(fileDir), true);


No se supone que busca aplicacion.exe en el directorio donde se está ejecutando la aplicación Dephi en ese momento y debería de hacer una copia de este fichero al directorio especificado en "fileDir" ??

dec
03-09-2007, 20:41:16
Hola,

Si no estableces la ruta completa del archivo... si no me equivoco se "buscará" en el directorio "activo" en ese momento (revisa las funciones "GetActiveDir", "SetActiveDir"). Pero si lo que quieres es copiar el ejecutable de tu aplicación nada te impide usar "ParamStr(0)",... que contiene la ruta completa del ejecutable de tu aplicación.

jymy788
03-09-2007, 20:55:26
Dec, la verdad es que he probado eso ya y nada.

De hecho, me he ido al ejemplo tonto


ok := CopyFile(PChar('c:\CLDMA.LOG'), PChar('c:\JYM'), true);


donde 'c:\CLDMA.LOG' existe y 'c:\JYM' también y no copia el fichero CLDMA.LOG al directorio C:\JYM y no tengo ni idea de por qué

dec
03-09-2007, 21:05:25
Hola,

Pues debería copiarlo... tal vez puedas echar un vistazo a "GetLastError()" cuando la función falle de modo que obtengas algo más de información. Y no sé si quizás hay que indicar el directorio de destino con una barra al final: "c:\JYM\", o bien incluso hay que indicar un nombre para el archivo en cuestión, es decir, en este caso: "c:\JYM\CLDMA.LOG".

jymy788
03-09-2007, 21:08:03
No puedo hacer otra cosa que quitarme el sobrero.

Había probado a poner las barras "\" a quitarlas, todo menos a ponerle el nombre al fichero de destino.

Lo dicho anteriormente, mil gracias