Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   function GetSpecialFolder (https://www.clubdelphi.com/foros/showthread.php?t=79720)

jonydread 03-08-2012 03:59:12

function GetSpecialFolder
 
hola amigos junto con saludarles les pido una ayuda
tengo esta funcion que encontre buscando y no encuentro como aplicarla
Código Delphi [-]
function GetSpecialFolder(FolderID : longint) : string;
 var
 Path : pchar;
 idList : PItemIDList;
 begin
 GetMem(Path, MAX_PATH);
 SHGetSpecialFolderLocation(0, FolderID, idList);
 SHGetPathFromIDList(idList, Path);
 Result := string(Path);
 FreeMem(Path);
 end;
function GetMyDocDir: string;
 begin
 Result := GetSpecialFolder(CSIDL_PERSONAL);
 end;
quisiera poner mis documentos como carpeta inicial la coloco asi pero la verdad ni idea de como hacerla
Código Delphi [-]
    SelectDirectory(
    'Seleccione Carpeta', // Texto de la ventana
    'GetMyDocDir',  // Carpeta inicial
    Carpeta  // Carpeta seleccionada
  );

espero su ayuda
gracias!

jonydread 03-08-2012 04:08:45

justo cuando me rendi y consulte, encontre la solucion solo debia sacar las comillas de GetMyDocDir
lo dejo como aporte xD
la funcion
Código Delphi [-]
function GetSpecialFolder(FolderID : longint) : string;
 var
 Path : pchar;
 idList : PItemIDList;
 begin
 GetMem(Path, MAX_PATH);
 SHGetSpecialFolderLocation(0, FolderID, idList);
 SHGetPathFromIDList(idList, Path);
 Result := string(Path);
 FreeMem(Path);
 end;
function GetMyDocDir: string;
 begin
 Result := GetSpecialFolder(CSIDL_PERSONAL);
 end;

se aplica

Código Delphi [-]
procedure TForm1.btAddClick(Sender: TObject);
var
  Carpeta: String;
begin
    SelectDirectory(
    'Seleccione Carpeta', // Texto de la ventana
    GetMyDocDir,  // Carpeta inicial
    Carpeta  // Carpeta seleccionada
  );
end;

ecfisa 03-08-2012 06:43:37

Hola jonydread.

Primero que nada gracias por compartir con nosotros la solución que encontraste. :)

Pero tal vez te convendría utilizar la función SHGetFolderLocation en su lugar, ya que Microsof desaconseja su uso como expone aqui: SHGetSpecialFolderLocation.
Cita:

SHGetSpecialFolderLocation is not supported and may be altered or unavailable in the future. Instead, use SHGetFolderLocation
En este enlace encontrarás el código para implementarla.

Saludos.

jonydread 04-08-2012 03:29:37

probare esa funcion
gracias saludos!!


La franja horaria es GMT +2. Ahora son las 10:21:23.

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