Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   acceder a carpeta de dropbox (https://www.clubdelphi.com/foros/showthread.php?t=88110)

emeritos 14-04-2015 11:30:49

acceder a carpeta de dropbox
 
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:
Código Delphi [-]
    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?

Código Delphi [-]
    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.

Código Delphi [-]
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/i...ons/csidls.htm

En principio deberás concatenar con CSIDL_PROFILE

Código Delphi [-]
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.


La franja horaria es GMT +2. Ahora son las 21:41:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi