Cuando necesita almacenar algún contenido relacionado con su Aplicación Delphi en el disco duro del usuario, debe cuidar el soporte para la separación de 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 Ventanas 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 las 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 SHGetFolderPath API 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 de datos de la aplicación válida.
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".