PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 22 → Fichier texte issu d'une appli A vide en lecture dans l'appli B
Fichier texte issu d'une appli A vide en lecture dans l'appli B
Débuté par EVonZ, 19 mai 2017 16:51 - 11 réponses
Membre enregistré
14 messages
Posté le 19 mai 2017 - 16:51
Bonjour,

Depuis une appli A je créé un fichier texte avec un code postal: 13000 par exemple
J'ouvre une appli B depuis cette même appli A avec un code natif Java (de suis en Windev Mobile 21 pour Android)

J'essaye de récupérer le code postal depuis l'appli B, mais c'est impossible!!
Voici mon code dans l'appli B
bufBuffCP = fChargeTexte(sPath)
sLigneTxt = bufBuffCP
nCodePostal = Val(sLigneTxt)


la variable nCodePostal est vide!!!

J'ai essayé avec fOuvre() et fLit(), c'est la même chose.

A noter, que cela fonctionne très bien depuis mon PC en mode émulateur.
Le fichier existe bien depuis l'appli B Existe(sPath) = vrai et taille(sPath) est supérieur à 0 depuis l'appli B

Je ne vois pas du tout la solution.

Merci.
Membre enregistré
31 messages
Posté le 19 mai 2017 - 17:20
Bonjour

c'est la joie du Ansi et de l'Unicode

quelques pistes :

les 2 applis sont sous Android ??

sLigneTxt est une chaine Unicode ??

dans l'appli A crait le fichier en mettant par exemple $13000$ au lieu de 13000
dans l'appli B
slignetxt=extraitchaine(sansespace(bufbuffcp},2,"$")
cela évite les RC, TAB, espaces, \0 qui peuvent exister

ATTENTION en Android ,Val renvoie un réel pas un entier

bon courage
Membre enregistré
14 messages
Posté le 19 mai 2017 - 17:29
Oui les deux applis sont sous Android.

J'ai mis: sLigneTxt est une chaine Unicode
puis
slignetxt=extraitchaine(sansespace(bufbuffcp},2,"$")

mais j'ai une erreur:
Le passage du paramètre 1 a provoqué une erreur.
Conversion ambiguë d'un buffer vers une chaîne Ansi ou Unicode.
Message modifié, 19 mai 2017 - 17:33
Membre enregistré
1 023 messages
Popularité : +9 (11 votes)
Posté le 20 mai 2017 - 10:09
Bonjour

tester ?
sLigneTxt est une chaine Unicode = fChargeTexte(sPath)
nCodePostal = Val(sLigneTxt)

--
Cordialement
François

http://intra.fr http://intrasoftware.fr
Membre enregistré
101 messages
Posté le 22 mai 2017 - 08:26
Bonjour,

Es tu certain que les deux programmes, puissent avoir accès au dossier référencé dans ta variable SPath ?

--
Bon développement

Pierre Devillers
Membre enregistré
14 messages
Posté le 22 mai 2017 - 08:51
Merci pour vos propositions, mais aucune des solutions proposées ne fonctionnent.
sLigneTxt est une chaîne UNICODE = fChargeTexte(sPath)
nCodePostal = Val(sLigneTxt)
Info(nCodePostal)


Info me sort 0
Membre enregistré
14 messages
Posté le 22 mai 2017 - 08:55
Bonjour DIP ...

Non, je n'en suis pas certain.
Comment faire pour savoir si Appli B accède bien au fichier qui est situé dans Appli A?

Appli B trouve bien le fichier, puisque fFichierExiste(sPath) = vrai.
Message modifié, 22 mai 2017 - 08:59
Membre enregistré
14 messages
Posté le 22 mai 2017 - 09:45
J'ai testé juste après sa création dans Appli A, le fichier texte.
Je le réouvre et essaye de lire la ligne.
fFerme(nIDFichier)
// test juste après la fermeture
.....
bufBuffTest = fChargeTexte(sPath)
sLigneTxt = bufBuffTest
nEntierTest est un entier = Val(sLigneTxt)
Info(nEntierTest)


En mode émulateur sur le PC, c'est OK: 13000
Sur le smartphone ce n'est pas bon!!! info me sort '0'
Message modifié, 22 mai 2017 - 09:47
Membre enregistré
14 messages
Posté le 22 mai 2017 - 10:39
Il semblerait effectivement que l'Appli B ne puisse pas lire le fichier texte présent dans l'Appli A.

Si quelqu'un à une piste, ou comment passer un paramètre entre applications Android sous Windev Mobile 21.

Merci
Membre enregistré
101 messages
Posté le 22 mai 2017 - 11:20
Re Bonjour,

Oui, il existe plusieurs pistes.
1. Vérifier que les deux applications on bien l'autorisation "Stockage". Pour cela sur le smartphone : Paramètres -> Applications -> Configurer les applis (roue dentée en haut à droite) -> Stokage

2. Mettre le fichier à partager dans un dossier sur la SD Card (réelle ou virtuelle)

2 bis . Si tu as plusieurs fichiers en commun dans les deux applications, déclarer le répertoire de travail sur la SD comme ceci :
SI PAS EnModeTest() ALORS // Création de l'emplacement des fichiers
CheminData est une chaîne = "/sdcard/MonDossierCommun/data/"
HDécritConnexion ("CnxSDCard", "", "", CheminData, "", hAccèsHF7, hOLectureEcriture, "")
HChangeConnexion("*", "CnxSDCard")
SINON
CheminData="D:\Mes Projets\MonProgramme\Exe\Data"
FIN


--
Bon développement

Pierre Devillers
Membre enregistré
14 messages
Posté le 22 mai 2017 - 11:25
Bon, j'ai fini par trouve rune solution...

Le problème venait du répertoire contenant le fichier qui n'était pas accessible par l'appli B.

J'ai donc contourné le problème à la création coté appli A
fCrée(SysRepCarteStockage()+"/CodePostal.txt")
...


et à la lecture coté Appli B:
fOuvre(SysRepCarteStockage()+"/CodePostal.txt")


le paramètre est bien passé entre les deux applis.
"Sous Android, sur l'appareil comme sur l'émulateur, le système de fichiers est en lecture seule. Une application a uniquement le droit d'écrire dans son répertoire d'installation ou dans un de ses sous-répertoires, ainsi que sur la mémoire externe (SDCard)."
Membre enregistré
14 messages
Posté le 22 mai 2017 - 14:06
SysRepcarteStockae() semble moins réactif...à suivre!
Message modifié, 22 mai 2017 - 14:07