PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → ZoneRépétée
ZoneRépétée
Débuté par Mustapha, 15 avr. 2019 11:58 - 8 réponses
Membre enregistré
48 messages
Popularité : -1 (3 votes)
Posté le 15 avril 2019 - 11:58
Bonjour
Je travail sur une application windev j’utilise un code qui consiste a afficher une liste de tous les MP4 qui se trouvent dans un répertoire dans une ZoneRépétée avec un libbelé qui affiche le nom et un autre qui affiche le chemain.
dans mon code sa ne donne rien, quand j'utilise pour un type image sa marche mais pas dans un type MP4
// Déclaration Des Variables
UnFichier, ResListeFichier , Extention sont des chaînes
tabChaine est un tableau de chaînes = [".MP4"]
Indice est un entier=0
//sResNomFichier est une chaîne
sCheminFichier est une chaîne
// Liste les fichiers de tout les MP4
// Le parcours se fait également dans les sous-répertoires et est interruptible.
ResListeFichier = fListeFichier("C:\Users\mustapha.bradai\Videos\Video\*.*", frRécursif + frInterruptible)
// Récupération du nom du fichier
sCheminFichier = ResListeFichier
// Récupération du nom du fichier
//sResNomFichier = fExtraitChemin(sCheminFichier, fFichier)
// Initialisation de zone répétée ZR_ZoneRépétée
ZoneRépétéeSupprimeTout(ZR_ZoneRépétée)
// Pour chaque fichier trouvé
POUR TOUTE chaîne UnFichier de ResListeFichier SEPAREE PAR RC
// Determiner l'extention
Extention=(fExtraitChemin(UnFichier,fFichier+fExtension))
// Comparer l'extention
SI Contient(Extention, tabChaine)
// Ajout d'une répétition vide
ZoneRépétéeAjoute(ZR_ZoneRépétée)
// Positionnement sur la répétition vide
Indice = ZoneRépétéeOccurrence(ZR_ZoneRépétée)
// Puis initialisation des attributs

ZR_ZoneRépétée[Indice].LIB_SansNom1=UnFichier
ZR_ZoneRépétée[Indice].LIB_SansNom2=ExtraitChaîne(LIB_SansNom1,6, ["\"])
FIN
FIN
ZoneRépétéeAffiche(ZR_ZoneRépétée)
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 15 avril 2019 - 12:14
Bonjour,
Je viens de testet ton code en WD24 (63e) sans problème

Attention cependant : la fonction Contient est par défaut sensible à la casse.
Essaiye de rajouter un l'option Sans casse :
SI Contient(Extention, tabChaine,SansCasse)
Membre enregistré
48 messages
Popularité : -1 (3 votes)
Posté le 15 avril 2019 - 12:58
Merci sa a marcher mais il me donne seulement le 1er MP4 trouver et que moi j'ai 6
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 15 avril 2019 - 14:19
Ben chez moi j'ai bien plusieurs lignes !

T'as vérifié dans la description de la ZR que t'as bien un contenu "par programmation" et que le champ est assez haut pour contenir plus d'une ligne ( ou que l'ascenseur vertical est bien activé) ?

Verifie aussi qu'il n'y a pas de caractères blancs dans l'extension
Membre enregistré
352 messages
Popularité : +12 (18 votes)
Posté le 16 avril 2019 - 09:11
Bonjour, je vois que vous faites à la fois appel à ZoneRépétéeAjoute(ZR_ZoneRépétée) et à ZoneRépétéeAffiche(ZR_ZoneRépétée) pour alimenter votre ZR.
Si le champ est alimenté par programmation, il est inutile de faire appel à ZoneRépétéeAffiche.
Si le champ est alimenté par binding, il est inutile de faire appel à ZoneRépétéeAjoute (ou à ZoneRépétéeAjouteLigne) mais il faut alimenter la source de données, reste à identifier comment le binding se fait (variable, fichier HF, ...), mais compte tenu que le champ contient 1 seule ligne, vous procédez par binding.
Membre enregistré
48 messages
Popularité : -1 (3 votes)
Posté le 16 avril 2019 - 10:50
Bonjour
Ma zone répéter es alimenter par programmation
mon erreur actuel c'est que le nom de chaque MP4 trouver donne le mémé résultat c'est le nom du 1er fichier afficher
J'ai utiliser cet ligne de code pour afficher le nom :
ZR_ZoneRépétée[Indice].LIB_SansNom2=ExtraitChaîne(LIB_SansNom1,6, ["\"])
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 16 avril 2019 - 11:08
Il faudrait écrire :
ZR_ZoneRépétée[Indice].LIB_SansNom2=ExtraitChaîne(ZR_ZoneRépétée[Indice].LIB_SansNom1,6, ["\"])


Sinon LIB_SansNom1 seul représente le champ du modèle de ZR et pas le champ de la ligne de ZR
Message modifié, 16 avril 2019 - 11:09
Membre enregistré
939 messages
Popularité : +66 (68 votes)
Posté le 16 avril 2019 - 11:17
bonjour Mustapha,

alors , plusieurs petit truc ,

// Determiner l'extention
Extention=(fExtraitChemin(UnFichier,fFichier+fExtension))

votre variable va contenir le nom du fichier + l'extension

à remplacer par
// Determiner l'extention
Extention=(fExtraitChemin(UnFichier,fExtension))



ZR_ZoneRépétée[Indice].LIB_SansNom1=UnFichier
ZR_ZoneRépétée[Indice].LIB_SansNom2=ExtraitChaîne(LIB_SansNom1,6, ["\"])

UnFichier contient le nom complet du fichier et son chemin
et le Extraitchaine est un peu trop 'en dur' , car le moindre changement de dossier, et le extraitchaine de 6 ne fonctionne plus
il faut réutiliser la fonction Fextraitchemin()


ZR_ZoneRépétée[Indice].LIB_SansNom1=fExtraitChemin(UnFichier,fDisque+fRépertoire)
ZR_ZoneRépétée[Indice].LIB_SansNom2=fExtraitChemin(UnFichier,fFichier+fExtension)


Par contre, je verrais plutôt l'utilisation des attributs pour votre zone répétée.
Dans la description de votre zone répétée, ajoutez deux attributs, un pour votre premier libellé et un autre pour le second.
du genre ATTR_Chemin et ATTR_NomFichier

et utilisez la fonction ZoneRépétéeAjouteLigne()

du genre :
// Pour chaque fichier trouvé
POUR TOUTE chaîne UnFichier de ResListeFichier SEPAREE PAR RC
// Determiner l'extention
Extention=(fExtraitChemin(UnFichier,fExtension))
// Comparer l'extention
SI Contient(Extention, tabChaine,SansCasse)
// Ajout d'une répétition vide
ZoneRépétéeAjouteLigne(ZR_ZoneRépétée,fExtraitChemin(UnFichier,fDisque+fRépertoire),fExtraitChemin(UnFichier,fFichier+fExtension))
FIN
FIN


ZoneRépétéeAffiche(ZR_ZoneRépétée)

ne sert à rien dans votre cas...

bon dèv
Membre enregistré
48 messages
Popularité : -1 (3 votes)
Posté le 16 avril 2019 - 12:25
Merci sa a marcher et voila mon code :
// Déclaration Des Variables
UnFichier, ResListeFichier , Extention sont des chaînes
tabChaine est un tableau de chaînes = [".MP4"]
Indice est un entier=0
//sResNomFichier est une chaîne
sCheminFichier est une chaîne
ResCréation est un booléen

// Création d'un répertoire
ResCréation = fRepCrée("\Videos")

// Liste les fichiers de tout les MP4
// Le parcours se fait également dans les sous-répertoires et est interruptible.
ResListeFichier = fListeFichier("\Videos\*.*", frRécursif + frInterruptible)
// Récupération du nom du fichier
sCheminFichier = ResListeFichier
// Récupération du nom du fichier
//sResNomFichier = fExtraitChemin(sCheminFichier, fFichier)
// Initialisation de zone répétée ZR_ZoneRépétée
ZoneRépétéeSupprimeTout(ZR_ZoneRépétée)
// Pour chaque fichier trouvé
POUR TOUTE chaîne UnFichier de ResListeFichier SEPAREE PAR RC
// Determiner l'extention
Extention=(fExtraitChemin(UnFichier,fFichier+fExtension))
// Comparer l'extention
SI Contient(Extention, tabChaine,SansCasse)
// Ajout d'une répétition vide
ZoneRépétéeAjoute(ZR_ZoneRépétée)
// Positionnement sur la répétition vide
Indice = ZoneRépétéeOccurrence(ZR_ZoneRépétée)
// Puis initialisation des attributs
//ZR_ZoneRépétée[Indice].IMG_Photo=UnFichier
ZR_ZoneRépétée[Indice].LIB_SansNom1=UnFichier
ZR_ZoneRépétée[Indice].LIB_SansNom2=fExtraitChemin(UnFichier,fFichier+fExtension)
FIN
FIN
ZoneRépétéeAffiche(ZR_ZoneRépétée)