Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Je souhaite récupérer le contenu d'un répertoire afin de traiter le fichier qui doit y être déposé tous les mois...
Mais, hélas, je suis bloqué sur le 'peuplement' de ma listbox...
Voici mon petit code :
string ls_file integer li_item_count boolean lb_exist listbox lb_files lb_files = create listbox lb_exist = lb_files.DirList("C:\*.txt", 0) if lb_exist = true then li_item_count = lb_files.TotalItems( ) choose case li_item_count case is < 1 MessageBox("Problème", "Impossible d'exécuter le programme car aucun fichier n'est présent dans le répertoire de traitement...") case is > 1 MessageBox("Problème", "Impossible d'exécuter le programme car plusieurs fichiers sont présents dans le répertoire de traitement...") case 1 lb_files.SelectItem( li_item_count ) ls_file = lb_files.SelectedItem( ) lb_exist = FileExists(ls_file) IF lb_exist THEN MessageBox("Go", "Ici, on traite méchamment") end if end choose else MessageBox("Problème", "Impossible de trouver le répertoire de traitement") end if
J'ai toujours le message "Impossible de trouver le répertoire de traitement" et ce, quelque soit le répertoire mentionné !!!
Si j'ai loupé un épisode, n'hésitez pas !!! Merci d'avance.
PS : je me suis basé sur ce topic pour débuter : http://pbadonf.fr/forum/viewtopic.php?id=277
Dernière modification par jordel (25-09-2012 13:01:43)
Hors ligne
Bonjour,
Tu es sur d'avoir les droits pour accéder à la racine du c: ?
(sinon petit HS : if lb_exist = true then
<=> if lb_exist then
)
NB :
Hors ligne
Oui oui... j'ai bien les droits !
Pour confirmer cela... j'ai fait un test juste avant le DirList, en faisant un FileOpen sur mon fichier TXT himself et j'ai bien un retour à 1 !
Ou alors... les droits mini ne sont pas les mêmes pour ces 2 fonctions ???
Bizarre !!!
PS : merci pour le HS ;)
Dernière modification par jordel (25-09-2012 09:03:00)
Hors ligne
Bonjour,
pourquoi passes-tu par un create ? J'ai fait le test chez moi et j'ai le même comportement que toi (probablement qu'il faut faire autre chose après le create...). Par contre, si je remplace ta listbox par une listbox déposée sur une fenêtre, ça marche parfaitement. Si tu ne veux plus la voir, tu la mets invisible. Fais déjà ce test, ça lèvera aussi le doute concernant l'accès à la root C:.
Hors ligne
Voilà, un peu de recherche (https://groups.google.com/forum/?fromgr … w4SbAPqbQg) et tu dois utiliser openuserobject(lb_files) au lieu de lb_files = create listbox.
Hors ligne
En PB, il ne faut pas faire create listbox mais un WINDOW_NAME.openUserObject( ... ) pour des visualobjects.
Hors ligne
En fait... je ne pense pas être parti du bon côté... et/ou l'expression de mon besoin doit être floue.
Je souhaite simplement vérifier la présence d'un fichier txt dans un répertoire pour un traitement type batch (juste un script sans interface aucune)
Hors ligne
Si le nom du fichier est connu, un FileExists suffit.
Sinon, comme ça semble être le cas dans ton code, il y peut y avoir plusieurs fichiers .txt.
La méthode avec le DirList fonctionne, mais comme tout le monde l'a dit, il ne faut pas faire de Create pour les objets visuels...
Une 2ème couche pour la route :
Hors ligne
alors il faudra peut-être passer par l'API Windows si tu ne connais pas d'avance le nom du fichier TXT à tester.
Hors ligne