PDA

Ver la Versión Completa : Ruta-carpeta-directorio del cd-rom?


mancurnino
30-08-2008, 23:30:20
Hola amigos. No sabia bien como poner el titulo, asi que perdonadme.

Tengo un .exe al que queria añadirle mediante un archivo de recursos varios cds de musica, pero cuando el archivo de recursos me ocupa mas de 600 megas o asi, me da el error RLINK32 out of memory, y no me acepta mas.

¿Hay alguna forma de que pueda meter el tamaño que quiera al .exe, por ejemplo 2 gigas en un archivo de recursos?

Como me sale este problema, habia pensando en poner el .exe y la musica por separado, por ejemplo, grabar en un cd el .exe y al lado una carpeta llamada "musica", que tiene varias subcarpetas, por ej "cd1" cd2", etc. y dentro de cada carpeta las canciones de ese cd en formato .wav. A cada cancion de cada cd la llamo mediante un boton. y utilizando la funcion Playsound.

¿Que parametros tendria que ponerle a esta funcion Playsound?

Teniendo en cuenta que el .exe esta en un cd que esta en el cd rom del pc, que no sé que unidad o letra es. si fuese el disco duro, se que es 'C', pero al ser el cd rom? con un punto valdria? como indicando la carpeta actual? Ejemplo '.\musica\cd1\cancion1.wav', y luego los otros parametros de playsound, como serían?

asi por ejemplo? --> Playsound('.\musica\cd1\cancion1.wav',0,SND_FILENAME)

Gracias por vuestra ayuda.

dec
30-08-2008, 23:39:49
Hola,

Yo separaría sin dudar los archivos del ejecutable. Por otro lado, puedes recurrir a funciones como esta, implementada en la unidad "SysUtils":


var
s: string;
begin
s := ExtractFilePath(ParamStr(0));
{...}
end;


La variable "s" contendría la ruta absoluta al directorio donde se encuentra el archivo ejecutable de tu aplicación. A partir de ahí tú podrías construir el resto de la ruta necesaria para llegar al archivo correspondiente:


var
s, a: string;
begin
s := ExtractFilePath(ParamStr(0));
a := s + 'cd1\archivo-musica.mp3';
{...}
end;


La variable "a" contendría la ruta completa al "archivo-musica.mp3", independientemente de dónde estuviera tu aplicación, si en un CD, si en el disco duro, en una unidad o en otra. Evidentemente, quedaría por comprobar que, efectivamente, el archivo existe, y para eso puedes utilizar la función "FileExists()", como sabes.

coso
30-08-2008, 23:41:24
Hola,
al cargar el programa, se cargan todos sus recursos, asi q estas cargando todas las canciones a la vez, por lo que te quedas sin memoria.
En cuanto al directorio, le echaria un vistazo a 'ExtractFilePath(Application.Exename)' , que te devuelve el directorio de la aplicacion. saludos.
PD: En trucos, hay algunos para saber las unidades disponibles y su tipo
Vamos, lo que dice dec...

mancurnino
31-08-2008, 12:20:35
Gracias por la informacion, buscare informacion sobre lo del archivo de recursos para ver si puedo añadirlo al .exe siendo grande su tamaño.