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)
-   -   Conocer la carpeta del usuario (https://www.clubdelphi.com/foros/showthread.php?t=37290)

Egroc 08-11-2006 18:14:13

Conocer la carpeta del usuario
 
Hola. Tengo un pequeño problema al que no consigo darle respuesta. He buscado en la web y en todos los foros que he encontrado pero no veo la solución.

El problema consiste en cómo saber la ruta de la carpeta del usuario en Windows. Es decir, la ruta tipo "C:\Documents and Settings\NombreUsuario\" en borland delphi.

Creo que se puede hacer con GetEnvironmentVariable pero desconozco el nombre de la misma para obtener este resultado.

Gracias.

oscarnoe 08-11-2006 18:31:42

La variable de entorno que buscas es USERPROFILE.

Si quieres saber las variables de entorno en tu sistema, ejecuta una linea de comandos y el comando SET a secas.

Espero que te sirva de ayuda.

Oscar Noe

Bicho 08-11-2006 18:37:42

Hola, a ver si te sirve esto:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShFolder, ShlObj;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  SHGFP_TYPE_CURRENT = 0;
var
  Buffer: array[0..MAX_PATH] of Char;begin
  SHGetFolderPath(0, CSIDL_PERSONAL, 0, SHGFP_TYPE_CURRENT, Buffer); //CSIDL_PERSONAL = es la variable que indica que carpeta queremos obtener
  Edit1.Text := Buffer;
end;

end.

Espero te sirva,

Saludos

seoane 08-11-2006 18:41:36

:mad: Bicho, me ganaste por segundos

Código Delphi [-]
const
  CSIDL_PROFILE = 40;
  SHGFP_TYPE_CURRENT = 0;

function SHGetFolderPath(hwndOwner: HWND;
  nFolder: Integer;
  hToken: THandle;
  dwFlags: DWORD;
  pszPath: LPTSTR): HRESULT; stdcall;
  external 'Shell32.dll' name 'SHGetFolderPathA';

function GetUserProfile: string;
var
  Buffer: array[0..MAX_PATH] of Char;
begin
  FillChar(Buffer, SizeOf(Buffer), 0);
  SHGetFolderPath(0, CSIDL_PROFILE, 0, SHGFP_TYPE_CURRENT, Buffer);
  Result := String(PChar(@Buffer));
end;

:D

Bicho 08-11-2006 18:46:17

Cita:

Empezado por seoane
Bicho, me ganaste por segundos

Alguna vez me tocaba, no?
La verdad es que llevaba un buen rato buscando. Creia haberlo visto en algún lado, pero no..., no estaba en ningún sitio.
Luego pensé: fácil, busca el usuario (esa función la tenemos) y luego buscas la carpeta Documents and setting + usuario, pero me dije, es un poco chapuza, algo debe haber.
Así que empecé a buscar y encontré esa función, sólo jugué un poco con las variables y a la segunda me dio lo que buscabamos.

Saludos

Ñuño Martínez 08-11-2006 18:46:30

Vaya, me habéis ahorrado un viaje, porque una pregunta similar a esta iba a hacerla yo dentro de unos meses para un proyecto que tengo pendiente. :D

Egroc 09-11-2006 09:09:40

¡Muchas gracias!, ¡es justo lo que necesitaba!!!


La franja horaria es GMT +2. Ahora son las 04:05:39.

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