PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → ZoneRépétée
ZoneRépétée
Iniciado por Mus, 15,abr. 2019 11:58 - 8 respuestas
Miembro registrado
48 mensajes
Publicado el 15,abril 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)
Miembro registrado
139 mensajes
Publicado el 15,abril 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)
Miembro registrado
48 mensajes
Publicado el 15,abril 2019 - 12:58
Merci sa a marcher mais il me donne seulement le 1er MP4 trouver et que moi j'ai 6
Miembro registrado
139 mensajes
Publicado el 15,abril 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
Miembro registrado
352 mensajes
Publicado el 16,abril 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.
Miembro registrado
48 mensajes
Publicado el 16,abril 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, ["\"])
Miembro registrado
139 mensajes
Publicado el 16,abril 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
Mensaje modificado, 16,abril 2019 - 11:09
Miembro registrado
953 mensajes
Publicado el 16,abril 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
Miembro registrado
48 mensajes
Publicado el 16,abril 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)