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
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 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.
//hostimage.webdev.info/avatars/2ozlPPAkAHDObGnEjNWI7g
Membre enregistré
15 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
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 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
//hostimage.webdev.info/avatars/VD6DdII098urIaoK3mZWXw
Membre enregistré
939 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
//hostimage.webdev.info/avatars/goseswkhZZ4i5Tqe3JLExA
Membre enregistré
98 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
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 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
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 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
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 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
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 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
//hostimage.webdev.info/avatars/goseswkhZZ4i5Tqe3JLExA
Membre enregistré
98 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
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 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)."
//hostimage.webdev.info/avatars/TebwzrQ3XXDl3gUOZpPg
Membre enregistré
9 messages
Posté le 22 mai 2017 - 14:06
SysRepcarteStockae() semble moins réactif...à suivre!
Message modifié, 22 mai 2017 - 14:07