(07-10-2022, 00:17)vuott escribió: Te remito a la nota 2 en la parte inferior de la página siguiente (tendrás que traducirla):
Gratias ago tibi, legatus Vuott.
(07-10-2022, 10:27)Shordi escribió: Consul locuta, causa finita.
En este caso, Vuott lo ha dejado bien claro.
Adjunto la traducción que crea Google Translator. Espero que buena.
Cita:
Un proyecto de Gambas tiene un "directorio de proyecto", que es donde se almacenan su código fuente, configuración y archivos de datos. Se puede acceder a él en tiempo de ejecución a través de "Application.Path", pero debe tenerse en cuenta que un script de Gambas está incrustado en un proyecto temporal sobre la marcha.
Por lo tanto, obtiene la ruta a ese proyecto en lugar de la ruta al archivo de script; y "Application.Path" de un ejecutable será otra cosa (solo / tmp). "Application.Path" es, según la documentación, la ruta al directorio del proyecto. Cuando crea un paquete de instalación, solo se instala un archivo ejecutable (file.gambas). Usar "Application.Path" no tiene sentido para dicho archivo. Así, por ejemplo, los archivos que ahora están en la carpeta del proyecto se ubican posteriormente en un archivo y no tienen ruta en el sistema de archivos. La solución es usar rutas "relativas".
El intérprete de Gambas resuelve automáticamente las rutas "relativas" en sus funciones, como "File.Load ()", en relación con el directorio base del archivo. Cuando se crea un paquete de instalación, solo obtiene un archivo ejecutable del proyecto (archivo * .gambas) dentro de él. Este archivo es un solo archivo que contiene todo el proyecto, pero obviamente no es posible usar rutas "absolutas" en el sistema de archivos para acceder a estos archivos. Si tiene la intención de acceder a un archivo ubicado en relación con el directorio del proyecto, debe usar rutas "relativas" simples.
Otra cosa es el directorio de trabajo actual (cwd), que es un concepto familiar para el shell y otros lenguajes de programación. El cwd al iniciar el programa está disponible a través de "Application.Dir". Sin embargo, el lenguaje Gambas no tiene un concepto de "directorio de trabajo actual", ya que las rutas "relativas" en el código siempre son interpretadas por los integrados de Gambas como "relativas" al directorio del proyecto, nunca al entorno cwd . En caso de que se inicie desde un ejecutable, Gambas accederá de forma transparente a los archivos en la estructura de archivos mapeados en memoria y proporcionará su contenido. Sin embargo, recuerde que las rutas "relativas" en los programas de Gambas no hacen lo que está acostumbrado con el shell. En breve: - No es necesario consultar "Application.Path" para los datos del proyecto; use rutas "relativas" en su lugar. - No debe usar rutas "relativas" para los archivos en el cwd: es recomendable hacerlas "absolutas" con "Application.Dir & / ...".
En el texto se habla del directorio de trabajo "cwd". ¿ Por casualidad su traducción es "change work directory" ?.
Pero como comando no existe. O por lo menos en el sistema que estoy usando (Linux Mint Mate 20.3), en el manual no aparece.
Aunque lo busco y encuentro esto:
Cwd - get pathname of current working directory
En el código fuentes de Gambas al cargarlo, tenemos el módulo "Project". Encontré dos referencias a Application.Dir
Fijaros, de paso conocemos un método de la clase
File, que es el método "
IsRelative". Pero se necesita usar el componente gb.util
si se quiere usar.
Ejemplos de líneas que lo encontré en el modulo Project:
Código:
If Not sPath Then sPath = Application.Dir
Y la mejor. Por aclaratoria.
Código:
If File.IsRelative(sPath) Then sPath = Application.Dir &/ sPath
Gambas est magnus.
Saludos