Almacenar datos de aplicaciones de usuario y Delphi en la ubicación correcta

Cuando necesite almacenar algún contenido relacionado con su aplicación Delphi en el disco duro del usuario, debe ocuparse del soporte para la separación del estado de los datos del usuario, la configuración del usuario y la configuración de la computadora.

Por ejemplo, la carpeta "Datos de la aplicación" en Windows debe usarse para almacenar documentos específicos de la aplicación, como archivos INI, estado de la aplicación, archivos temporales o similares.

Nunca debe usar rutas codificadas a ubicaciones específicas, como "c: \ Archivos de programa", ya que esto puede no funcionar en otras versiones de Windows porque la ubicación de carpetas y directorios puede cambiar con diferentes versiones de Windows.

La función de API de Windows SHGetFolderPath

SHGetFolderPath está disponible en el SHFolder unidad. SHGetFolderPath recupera la ruta completa de una carpeta conocida identificada.

Aquí hay una función de envoltura personalizada alrededor de la API SHGetFolderPath para ayudarlo a obtener cualquiera de las carpetas estándar para todos o el usuario de Windows actualmente registrado.

Aquí hay un ejemplo del uso de la función SHGetFolderPath:

  • Coloque un TRadioButtonGroup (nombre: "RadioGroup1") en un formulario
  • Coloque un TLabel (nombre: "Label1") en un formulario
  • Agregue 5 elementos al grupo de radio:
    • "[Usuario actual] \ Mis documentos"
    • "Todos los usuarios \ Datos de la aplicación"
    • "[Específico del usuario] \ Datos de la aplicación"
    • "Archivos de programa"
    • "Todos los usuarios \ Documentos"
  • Maneje el evento OnClick de RadioGroup como:

Nota: "[Usuario actual]" es el nombre del usuario de Windows actualmente conectado.

Nota: SHGetFolderPath es un superconjunto de SHGetSpecialFolderPath.

No debe almacenar datos específicos de la aplicación (como archivos temporales, preferencias del usuario, archivos de configuración de la aplicación, etc.) en la carpeta Mis documentos. En su lugar, use un archivo específico de la aplicación que se encuentra en una carpeta válida de datos de la aplicación.

Siempre agregue una subcarpeta a la ruta que devuelve SHGetFolderPath. Use la siguiente convención: "\ Datos de la aplicación \ Nombre de la empresa \ Nombre del producto \ Versión del producto".