SpecialFolder

Buenos das, estoy iniciando a descubrir Xojo, de momento tengo una duda que no e logrado encontrar en la documentacin.

Estoy tratando de indicar que mi base de datos se encuentra en el directorio actual y dentro de la subcarpeta Datos, sin embargo no se logra la conexin, qu estoy haciendo mal ?

dim f as folderitem=SpecialFolder.CurrentWorkingDirectory.Child(“Datos”).child(“Bagenda.sqlite”)

Hola Esteban, yo tambin estoy aprendiendo, tratando de leer y practicar todo lo posible.

De acuerdo a la documentacin de SpecialFolder el valor de CurrentWorkingDirectory vara dependiendo de la ejecucin de la app. Inclusive dice que en Windows cambia si se ejecuta desde Xojo o si se crea una app.

Normalmente lo que yo hago es poner un MsgBox para saber qu valores est tomando Xojo, ya que normalmente son diferentes a los que yo quiero :wink:

dim f As FolderItem f = SpecialFolder.CurrentWorkingDirectory MsgBox f.ShellPath
Con eso puedes ver el valor que tiene. Ya cuando sepamos usar mas Xojo podremos encontrar mas informacin en el debug, pero para ir aprendiendo a mi me sirve esta forma.

Para un app que estoy haciendo, pienso poner el SpecialFolder con Documents y de ah los Child.

Espero te sirva esta informacin que entrego de buena voluntad con mi experiencia de ‘muy novato’.

Saludos

Personalmente, no he utilizado SpecialFolder.CurrentWorkingDirectory, yo utilizo GetFolderItem("") me devuelve el actual directorio (puede cambiar si por ejemplo utilizo commandos shell para cambiar de directorio), y puede (dependiendo si esta en windows o mac) devolver el direcotio padre (por ejemplo para buscar en la carpeta “Resources”).

Tambien puede usar App.ExecutableFile por ejemplo App.ExecutableFile.Child("Datos").Child("Bagenda.sqlite")

Bernardo Monsalve

Me puse a utilizar la opcion GetFolderItem("") y me ha funcionado a la perfeccin, la utilice de la siguiente manera

dim f as folderitem=GetFolderItem("").child(“Datos”).Child(“Bagenda.sqlite”)

Muchas gracias…

Alberto De Poo

Tambin me puse a revisar la opcin que t me planteas y tambin me fue de utilidad.

Saludos…

Hola Esteban,

La mayor utilidad de SpecialFolder es la de acceder a directorios bien conocidos en cada una de las diferentes plataformas de despliegue, lo que significa que nos aseguramos de que la app siempre va a acceder al directorio (o jerarqua de directorios) correcta en funcin de cual sea el SO sobre el que se est ejecutando (macOS, Windows, Linux).

Por ejemplo, es prctica muy habitual utilizar todos los archivos auxiliares de la aplicacin dentro de la carpeta “Application Support”, en el caso de macOS y que tambin tiene sus equivalencias en Windows y Linux. Mediante el uso de SpecialFolder nuestro cdigo se ahorra la necesidad de saber sobre qu sistema operativo se ejecuta y crear un path en un sentido u otro a la hora de acceder al archivo. Esto mismo tambin es vlido para acceder a la carpeta de archivos temporales, cach y otros

Javier

Javier Menndez,

Buenas tardes,

Muchas gracias por la informacin, aqui sigo descubriendo Xojo, ahorita tengo duda de como ponerle a un TextFiedl el formato, para que solo acepte datos numericos.

Saludos…

Esteban, en eso estoy tambin.

Puedes leer sobre las mscaras aqu

Puedes poner en el apartado Behavior campo Mask por ejemplo 999 si necesitas que slo pongan nmeros (en este caso mximo 3).

Bueno, es como yo le entiendo. Saludos

Alberto De Poo

En inspector, behavior, mask, ah puse el formato, ejemplo ##########, para que el TextField1 acepte solo hasta 10 digitos.

Saludos…

Puse mal el link, segundo intento Mask doc

Por lo que entiendo se puede usar # o 9 para que el usuario slo pueda poner nmeros. Todava no capto cul es la diferencia entre ambos pero bueno seguimos probando y aprendiendo.

Saludos