Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2016
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
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
Código Delphi [-]
DataFile := TPath.Combine('/storage/extSdCard/Android/data/com.(tu Packeage).(Nombre del proyecto)/files/',  'NombreDelFichero.Extensió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
Código Delphi [-]
DataFile := TPath.Combine('/storage/extSdCard/', 'NombreDelFichero.Extensió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.
Responder Con Cita
  #2  
Antiguo 03-11-2016
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por jhonalone Ver Mensaje

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
Código Delphi [-]
DataFile := TPath.Combine('/storage/extSdCard/Android/data/com.(tu Packeage).(Nombre del proyecto)/files/',  'NombreDelFichero.Extensió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
Código Delphi [-]
DataFile := TPath.Combine('/storage/extSdCard/', 'NombreDelFichero.Extensió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.
Es por eso te he recomendado probar el Helper que está en http://cc.embarcadero.com/Item/30158
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 04-11-2016
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 04-11-2016
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
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:
Código Delphi [-]

implementation

uses
  System.SysUtils,
  Androidapi.Jni,
  Androidapi.JNIBridge,
  Androidapi.JNI.JavaTypes,
  Androidapi.Helpers,
  Androidapi.JNI.SystemIntf,
  Androidapi.JNI.EnvIntf;

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
Código Delphi [-]
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Controls.Presentation, Androidapi.IOUtilsEx;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
if isExternalStorageWritable
then Label1.Text := GetExternalSDCardDirectory
else ShowMessage('No hay SD card');
end;

end.

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.
Responder Con Cita
  #5  
Antiguo 04-11-2016
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
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.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 04-11-2016
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Grabar y leer datos desde un fichero Jere_84 Varios 13 08-04-2015 14:26:49
Componente para leer Smart Card shoulder Varios 4 17-01-2014 20:51:03
Es posible grabar ficheros en un DB José Luis Garcí Varios 2 31-03-2008 20:36:49
leer palabras de ficheros de texto alba13 OOP 10 21-10-2007 16:15:15
Leer ficheros Mac en Delphi thagson Varios 6 23-08-2006 14:12:08


La franja horaria es GMT +2. Ahora son las 15:01:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi