PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile 2024 → 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
Started by EVonZ, May, 19 2017 4:51 PM - 11 replies
Registered member
26 messages
Posted on May, 19 2017 - 4:51 PM
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.
Registered member
66 messages
Popularité : +6 (6 votes)
Posted on May, 19 2017 - 5:20 PM
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
Registered member
26 messages
Posted on May, 19 2017 - 5:29 PM
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 modified, May, 19 2017 - 5:33 PM
Registered member
1,603 messages
Popularité : +64 (70 votes)
Posted on May, 20 2017 - 10:09 AM
Bonjour

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

--
Cordialement
François

http://intra.fr http://intrasoftware.fr
Registered member
199 messages
Popularité : +14 (16 votes)
Posted on May, 22 2017 - 8:26 AM
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
Registered member
26 messages
Posted on May, 22 2017 - 8:51 AM
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
Registered member
26 messages
Posted on May, 22 2017 - 8:55 AM
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 modified, May, 22 2017 - 8:59 AM
Registered member
26 messages
Posted on May, 22 2017 - 9:45 AM
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 modified, May, 22 2017 - 9:47 AM
Registered member
26 messages
Posted on May, 22 2017 - 10:39 AM
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
Registered member
199 messages
Popularité : +14 (16 votes)
Posted on May, 22 2017 - 11:20 AM
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
Registered member
26 messages
Posted on May, 22 2017 - 11:25 AM
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)."
Registered member
26 messages
Posted on May, 22 2017 - 2:06 PM
SysRepcarteStockae() semble moins réactif...à suivre!
Message modified, May, 22 2017 - 2:07 PM