Lazarus

Other Languages => Spanish => Topic started by: esdonis on October 19, 2020, 06:10:57 pm

Title: obtener nombre de carpeta HOME
Post by: esdonis on October 19, 2020, 06:10:57 pm
Como podré obtener el nombre de la carpeta del usuario que tiene abierta la sesión de Linux desde lazarus?

Quiero verificar si no existe una carpeta dada el el usuario que tiene abierta la sesión, algo como:

if not DirectoryExists(/home/user_xxx/carpeta_xx') then
Title: Re: obtener nombre de carpeta HOME
Post by: Edson on October 19, 2020, 06:23:49 pm
Hola.

No lo he usado, pero en una rápida búsqueda veo que podrías ser GetUserDir().

También podrías ejecutar un comando del sistema operativo y capturar la salida para obtener esa información.
Title: Re: obtener nombre de carpeta HOME
Post by: mosquito on December 27, 2020, 09:59:55 am
Puede que algo así te sirva:
Code: Pascal  [Select][+][-]
  1. VAR
  2. USERFOL : STRING ;
  3.  
  4. BEGIN
  5. USERFOL:=GETENVIRONMENTVARIABLE('HOME'); // SOLO PARA UNIXES
  6.   IF DIRECTORYEXISTS(USERFOL+PATHDELIM+'carpeta_x') THEN BEGIN
  7.    // ...
  8.   END ELSE BEGIN
  9.    // CREATEDIR(USERFOL+PATHDELIM+'carpeta_x');
  10.   END;
  11.  
  12. END.  
  13.  
Title: Re: obtener nombre de carpeta HOME
Post by: Ñuño_Martínez on December 29, 2020, 11:50:28 am
La respuesta es GetUserDir (https://www.freepascal.org/docs-html/rtl/sysutils/getuserdir.html), principalmente porque mantiene la compatibilidad entre todos los sistemas y entornos soportados por el compilador.  El uso de GetEnvironmentVariable (https://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariable.html) dará problemas en sistemas donde no exista la variable "HOME" (como MS-DOS).
Title: Re: obtener nombre de carpeta HOME
Post by: mosquito on December 29, 2020, 05:56:33 pm
Mucho mejor con GetUserDir como apuntan los compis. Ya somos dos lo que hemos aprendido.
Gracias.
TinyPortal © 2005-2018