![]() |
¿Es posible grabar y leer ficheros en la SD card?
Hola compañeros.
Llevo ya unos cuantos días buscando la manera de salvar un fichero de texto en la SD card y recuperarlo después. He buscado en el foro, en StackOverflow, en los foros de Embarcadero... en Google... y nada. Unos dicen que comenzando la ruta por '/sdcard/...., Otros que utilizando TPath.Get.... Nada, he probado de todo y nada... Una vez me pareció que había encontrado la solución. Utilicé la siguiente ruta y no me dio error al grabarlo:
Me puse como loco y fui a comprobarlo inmediatamente. El directorio indicado de la SD estaba vacío... Seguí buscando y buscando en la tarjeta y en el teléfono y mi gran sorpresa fue que ¡¡ lo encontré en el directorio del mismo nombre, pero en el teléfono!!... Me eché las manos a la cabeza y todavía estoy pensando, ¿cómo es posible que el dispositivo haya ignorado la primera parte de la ruta, o sea donde dice "/sdcard" Seguiré buscando, ya que me resulta muy extraño que Embarcadero no haya facilitado esta posibilidad, (si es que existe). Si alguien lo ha conseguido, por favor, dígamelo. Y si alguien sabe que no es posible, por favor, también. Y dejo de volverme loco buscando. Perdonar que os importune con estas cuestiones, que seguramente serán vanas e irrelevantes para la mayoría de vosotros. Saludos para todos. |
Hola.
Acabo de leer aquí que existe la posibilidad que pretendo en Android. Otra cosa es si se puede desde Delphi y cómo se hace. Saludos. |
Hola de nuevo, compañeros.
SOLUCIONADO. Por si a alguien le interesa. La DIRECCION de la tarjeta SD para leer y escribir datos es la siguiente:
Seguramente el único que no lo sabía era yo. Aquí lo dejo por si alguno está tan despistado como un servidor. Gracias por leerme. Saludos para todos. |
Hola, ¿Probaste de pronto así?
|
Hola Jhonny.
En esa dirección es donde yo estaba grabando los ficheros antes de decidir grabarlos en la SD. Ésa dirección apunta a la carpeta \GT-I9195\Phone\Documents, que utiliza el espacio de almacenamiento de tu teléfono. GT-I9195 es el identificador de tu teléfono. Copruebalo y me cuentas. Saludos cordiales. |
Cita:
Lo único que encuentro así a paso veloz es este helper que podría ayudarte http://cc.embarcadero.com/Item/30158, aunque si funciona para ti la ruta tal y como la has colocado, pues genial. La cosa es que no estoy seguro de que eso te funcione en todos los teléfonos. |
No he probado lo siguiente en el teléfono, por lo que me pregunto...¿Qué ruta te arroja si usas lo siguiente?
P.D. Ya sé que no deberíamos usar ShowMessage en Android, pero es para este testeo solamente |
Hola jhonny.
He probaddo lo que me dijiste, pero la carpeta que me devuelve, aunque se puede grabar en ella, es el directorio principal del teléfono. No de la SD. Por otro lado, (¡¡mi gozo en un pozo!!) tengo que comunicaros que el tema NO ESTÁ SOLUCIONADO del todo, como yo pensaba. Me explico, la dirección
funciona perfectamente con la versión 4.4.2 de Android. Sin embargo al probarla en una versión más antigua 4.1.2 no funciona. Ahora bien, utilizando esta dirección
SI FUNCIONA, pero lo graba en el directorio principal de la SD Card, lo que me lleva a concluir que es necesaria alguna función que discrimine entre versiones para poder usarla con cualquier versión. Intentaré conseguirla. Espero que alguien me ayude. Saludos para todos. |
Cita:
|
Vaya, jhonny.
Parece que pinta bien. No entré en el enlace cuando me lo dejaste la primera vez, y ahora creo que he perdido el tiempo por no hacerlo. Lo probaré y te cuento. Un saludo y gracias. |
Bueno. Ya estoy aquí.
Te cuento. He bajado y descomprimido el archivo al que apunta el link de Embarcadero. Sólo venían 3 archivos: Androidapi.IOUtilsEx.pas (que es la unidad principal), Androidapi.JNI.EnvIntf.pas y Androidapi.JNI.SystemIntf.pas (usados por la unidad principal). Además, en su cláusula uses vienen otros cuantos:
Puesto que para compilarse los necesita todos, he copiado los que faltaban desde el directorio C:\RadStudio10\17.0\source\rtl\android He creado un proyecto nuevo
Al pulsar el Button1 me da el bonito mensaje de "Access violation" en dos dispositivos que lo he probado, en los mismos que con las rutas que anteriormente os he comentado, funcionaban. No sé si es que la unidad está escrita para otra versión de Delphi o qué pasa. Te agradezco tu esfuerzo, jhonny, pero creo que no voy a perder más tiempo con este asunto. Gracias de verdad. Saludos a todos. |
Hola, vale, es una pena que no continúes, lo que se me ha ocurrido es que quizá lo que te faltaba solamente era solicitar el permiso, esto no debe ser algo tan complejo.
|
jhonny... déjalo, no pierdas más tiempo.
De verdad que te agradezco tu esfuerzo. Ya que, para el terminal que lo voy a instalar me funciona, creo que no merece la pena emplear más esfuerzo, cuando haya que instalarlo en otro terminal, quizás retome el tema. Los permisos Read y Write del External Storage del proyecto de prueba están concedidos antes de que me de el error. Un saludo afectuoso. |
La franja horaria es GMT +2. Ahora son las 18:22:42. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi