PDA

Ver la Versión Completa : acceder a carpeta de dropbox


emeritos
14-04-2015, 11:30:49
Hola Dilferos.

Necesito averiguar como puedo acceder a una carpeta de dropbox que esta en el ordenador, pero con la particularidad que cambia el usuario. Con un ejemplo lo veremos mas claro.
En mi ordenador lo tengo asi:

FileListBox1.Directory := C:\Users\delgado\Dropbox\FotoVehiculos';


Pero si el programa se ejecuta desde otro ordenador lo que suele cambiar es donde esta la X, es decir, el usuario. ¿Como lo puedo averiguar para cada ordenador?


FileListBox1.Directory := C:\Users\xxxxxx\Dropbox\FotoVehiculos';



Gracias.

duilioisola
14-04-2015, 12:36:57
No se cual es el parámetro que tienes que poner, pero si utilizas Folder=5 te da la ruta a Mis Documentos del usuario.


function GetSpecialFolderPath(Folder: integer; CanCreate: boolean): string;
var
FilePath : array [0..MAX_PATH] of char;
begin
/// Gets path of special system folders
/// Call this routine as follows:
/// GetSpecialFolderPath (CSIDL_PERSONAL, false)
/// returns folder as result
/// Ejemplo: CSIDL_PERSONAL = 05 = Mis Documentos

SHGetSpecialFolderPath(0, @FilePath[0], FOLDER, CanCreate);
Result := FilePath;
end;

duilioisola
14-04-2015, 12:52:10
Aquí puedes ver los diferentes valoes para el parámetro Folder.

http://www.installmate.com/support/im9/using/symbols/functions/csidls.htm

En principio deberás concatenar con CSIDL_PROFILE


var
ruta : string;

[...]

// Obtengo ruta a carpeta de usuario
ruta := (GetSpecialFolderPath(40 {CSIDL_PROFILE}, 0);

// Me aseguro de que termine con separador de path
ruta := IncludeTrailingPathDelimiter(ruta);

// Concateno ruta Dropbox
ruta := ruta + + 'Dropbox\FotoVehiculos';

// Si la ruta existe
if DirectoryExists(ruta) then
begin
FileListBox1.Directory := ruta;
[...]
end
else
begin
ShowMessage('No encuentro la ruta ' + ruta);
end;

Neftali [Germán.Estévez]
14-04-2015, 13:12:27
En este mensaje también tienes explicado esto mismo (http://clubdelphi.com/foros/showpost.php?p=215167&postcount=2).