PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → ExtraitChaines entre deux séparateur.
ExtraitChaines entre deux séparateur.
Débuté par SubesseDEV, 08 juin 2023 21:27 - 10 réponses
Membre enregistré
32 messages
Popularité : +2 (2 votes)
Posté le 08 juin 2023 - 21:27
Bonjour, Sur WinDev mobile V27 je cherche à extraire une chaine entre Deux caractère afin d'isoler les infos demandées:
Voici le code que j'execute :
POUR xRangJ= 2 À 20 PAS 2
//Info(jsonreponse.Bibliotheque)
Produit est une chaîne = ExtraitChaîne(jsonreponse.Bibliotheque,xRangJ,["{"],["}"])
tailleC est un numérique = Taille(ExtraitChaîne(jsonreponse.Bibliotheque,xRangJ,["{"],["}"]))
Produit = ChaîneInsère(Produit,"}",tailleC)
Produit = ChaîneInsère(Produit,"{",1)
ProduitJ est un JSON=Produit

Sur simulateur windev pas de soucis, mais sur android il me note une erreur :
Erreur windev mobile l'opérateur [[]] est incompatible avec le type tableau extraitchaine

Je récupère un JSON sous ce format :
{"bibliotheque":[{"adulte":false,"consultation":null,"date":"Mon, 01 Jan 1900 00:00:00 GMT","favoris":null,"id":6,"nom":"temp","note":null,"sous-mediatise":null,"sous-note":null,"sur-mediatise":null,"sur-note":null,"url_image":"static/images/fiches/19/visual.jpg"},{"adulte":false,"consultation":null,"date":"Mon, 01 Jan 1900 00:00:00 GMT","favoris":null,"id":5,"nom":"temp","note":null,"sous-mediatise":null,"sous-note":null,"sur-mediatise":null,"sur-note":null,"url_image":"static/images/fiches/18/visual.jpg"},{"adulte":false,"consultation":null,"date":"Mon, 01 Jan 1900 00:00:00 GMT","favoris":null,"id":4,"nom":"temp","note":null,"sous-mediatise":null,"sous-note":null,"sur-mediatise":null,"sur-note":null,"url_image":"static/images/fiches/17/visual.jpg"},{"adulte":false,"consultation":null,"date":"Tue, 08 Jul 2014 00:00:00 GMT","favoris":null,"id":3,"nom":"temp","note":null,"sous-mediatise":null,"sous-note":null,"sur-mediatise":null,"sur-note":null,"url_image":"static/images/fiches/16/visual.jpg"},{"adulte":false,"consultation":null,"date":"Tue, 01 Jan 2008 00:00:00 GMT","favoris":null,"id":2,"nom":"temp","note":null,"sous-mediatise":null,"sous-note":null,"sur-mediatise":null,"sur-note":null,"url_image":"static/images/fiches/15/visual.jpg"},{"adulte":false,"consultation":null,"date":"Sat, 08 Apr 2017 00:00:00 GMT","favoris":null,"id":1,"nom":"Re:Creators","note":null,"sous-mediatise":null,"sous-note":null,"sur-mediatise":null,"sur-note":null,"url_image":"static/images/fiches/50/visual.jpg"}]}


Si vous avez une solution plus claire est moins brouillons pour isoler chaque élément dans {} afin de les gardée sous format Json mais les séparée pour que je puisse les traiter un par un dans une boucle FOR

Le but finale, j'ai une ZR et j'aimerais faire le scroll infini en récupèrent c'est 10 Produits et les infos.

Je vous remercie d'avance.
Membre enregistré
3 346 messages
Popularité : +93 (137 votes)
Posté le 08 juin 2023 - 23:00
Salut
A tu pensé à la fonction position.
Membre enregistré
397 messages
Popularité : +13 (13 votes)
Posté le 09 juin 2023 - 09:16
Bonjour,

Sauf si j'ai raté quelque chose dans votre code, avez-vous essayé d'utiliser directement le JSON depuis le début ?

jBibliotheque est un JSON = jsonreponse.bibliotheque

POUR i = 1 À jBibliotheque..Occurrence
ProduitJ est un JSON = jBibliotheque[i]

// Faire ce que l'on veut de ProduitJ
Info(ProduitJ.id, ProduitJ.nom)

// Si vous avez besoin de la représentation JSON de Produit pour un autre traitement
Produit est une chaîne = ProduitJ..FormatJSON
FIN
Membre enregistré
2 messages
Posté le 09 juin 2023 - 09:33
Bonjour tout le monde

Il existe ça :

Extraire une sous-chaîne d'une chaîne de caractères entre deux séparateurs de chaînes donnés
<Résultat> = ExtraitChaîneEntre(<Chaîne initiale> , <Rang> , <Séparateur de début> [, <Séparateur de fin> [, <Options>]])

https://doc.pcsoft.fr/fr-FR/?1000024868
Membre enregistré
32 messages
Popularité : +2 (2 votes)
Posté le 09 juin 2023 - 10:13
Salut,
Alors non mais je n'arrive pas à voir comment utiliser Position dans ce problème si tu pourrais m'éclairer ca serait sympas.

Le format est fixe, mais les données peuvent changer en nombre de caractères.

Je te remercie
Membre enregistré
32 messages
Popularité : +2 (2 votes)
Posté le 09 juin 2023 - 10:14
@Fédéric L.
Bonjour, oui je l'ai vue mais je possède la version 27 et cette fonction est disponible seulement sur 28 pour android
Membre enregistré
32 messages
Popularité : +2 (2 votes)
Posté le 09 juin 2023 - 11:49
bchanudet a écrit :
Bonjour,

Sauf si j'ai raté quelque chose dans votre code, avez-vous essayé d'utiliser directement le JSON depuis le début ?

jBibliotheque est un JSON = jsonreponse.bibliotheque

POUR i = 1 À jBibliotheque..Occurrence
ProduitJ est un JSON = jBibliotheque[i]

// Faire ce que l'on veut de ProduitJ
Info(ProduitJ.id, ProduitJ.nom)

// Si vous avez besoin de la représentation JSON de Produit pour un autre traitement
Produit est une chaîne = ProduitJ..FormatJSON
FIN



Super, cela fonctionne parfaitement c'est exactement ce qu'il me fallait.

Je rencontre un soucis de nouveau mais il intervient avec les images que je récupère sur simulteur via URL et sur mobile il ne les récupères pas.

Voici un exemple si vous avez une idée d'où cela peut venir
Résultat sur simulateur :


regarder.
Résultat sur Mobile Android :






Je vous remercie !
Membre enregistré
397 messages
Popularité : +13 (13 votes)
Posté le 09 juin 2023 - 14:37
Comment récupérez-vous et affectez-vous les images dans la zone répétée ?

Si vous les récupérez par HTTP avec un autre appel, alors regardez du côté de la connexion : il me semble qu'Android maintenant oblige l'utilisation du HTTPS pour la connexion à un serveur WEB.

Sinon, il faut que les images soient incluses dans l'APK qui est généré.
Membre enregistré
32 messages
Popularité : +2 (2 votes)
Posté le 09 juin 2023 - 14:49
UrlImg est une chaîne = UrlGC+ProduitJ.url_image
ZoneRépétéeAjouteLigne(ZR_Client,UrlImg,ProduitJ.nom)


Je récupère le liens JSON qui n'est pas le lien absolue, je concatène donc mon URL et le liens obtenue.
Dans ce cas voici le lien obtenue qui est bien en HTTPS :




J'ai testé un lien du site web allocine et cela fonctionne sur android :


Membre enregistré
797 messages
Popularité : +40 (42 votes)
Posté le 09 juin 2023 - 17:02
Bonjour, je ne vois pas dans la documentation que vous pouvez utiliser une url pour les charger directement dans le contrôle d'image. Vous devrez d'abord les télécharger et assigner le fichier à l'image.

Rubén
Membre enregistré
32 messages
Popularité : +2 (2 votes)
Posté le 09 juin 2023 - 17:20
D'accord je vais essayer, Merci !.
Mais pourtant avec le deuxieme liens que j'ai fournit l'image s'affiche correctement
Message modifié, 09 juin 2023 - 17:20