Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » Comment savoir si l'écriture d'un fichier est terminé ou non ?

#1 15-11-2012 15:56:19

Nathuse  
Membre
Lieu: Villeneuve d'Ascq
Date d'inscription: 15-11-2012
Messages: 3
Pépites: 23
Banque: 0
Site web

Comment savoir si l'écriture d'un fichier est terminé ou non ?

Bonjour,

Voilà je développe sous PB12. (mon poste est sous windows 7)
Je génére des flux pdf contenant plusieurs pages et dont le nombre de pages est inscrit dans le nom.
Seulement cette dernière information s'est avéré fausse, du coup j'utilise un exécutable en parallèle PDFTK qui ouvre le pdf et me donne (via un fichier texte qu'il génére) le bon nombre de pages. Il ne me reste plus après qu'a renommer mon flux avec le bon nombre de pages.
Lorsque je n'ai pas beaucoup de flux (fichiers pdf) tout va bien mais lorsque j'en ai un peu plus (environs 10 pdf dont certains de plus de 100 pages) là ca commence à dérailler.
En pas à pas détaillé ce second cas marche très bien mais pas en exécution normale.
Aussi je pense que le soucis se produit au niveau du renommage. En effet je ne peux pas renommer un fichier si une instance est ouverte dessus, je pense qu'il doit se produire une sorte de lock sur le fichier et que c'est cela qui m'empêche de renommer (copier) mon fichier.
Aussi ma question est là suivante : sauriez-vous svp si je peux savoir (et si oui comment) si une instance est ouverte sur un fichier (de type pdf) ?

J'ai fait plusieurs recherches au préalable mais à ce jour je n'ai pas trouvé de solutions :-(

En vous remerciant de votre aide,
Nath.

Hors ligne

 

#2 15-11-2012 16:47:13

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Comment savoir si l'écriture d'un fichier est terminé ou non ?

Tu peux essayer un FileOpen("fichier", StreamMode!, LockReadWrite!) : le LockReadWrite! demande un accès exclusif au fichier. Si le fichier est utilisé par un autre process, le FileOpen échouera.

Il suffit de tester ça en boucle, ou mieux dans un timer : tant que l'ouverture échoue (valeur de retour = -1), tu réessaies plus tard. Un fois que ça réussit (retour > -1) tu refermes le fichier et tu peux continuer ton traitement (renommage)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#3 16-11-2012 07:19:18

Nathuse  
Membre
Lieu: Villeneuve d'Ascq
Date d'inscription: 15-11-2012
Messages: 3
Pépites: 23
Banque: 0
Site web

Re: Comment savoir si l'écriture d'un fichier est terminé ou non ?

Merci j'avais tenté le fileOpen mais sans le "lockReadWrite" je vais tester ça de suite.
Merci beaucoup.

Hors ligne

 

#4 16-11-2012 07:41:05

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: Comment savoir si l'écriture d'un fichier est terminé ou non ?

si tu utilises "FileMove" pourquoi ne pas simplement tester le résultat et en cas d'erreur reprendre l'opération au bout d'un petit laps de temps ?


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#5 16-11-2012 09:18:58

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Comment savoir si l'écriture d'un fichier est terminé ou non ?

Bonjour,

Tu peux également utiliser la librairie "runandwait" disponible sur le site : http://www.topwizprogramming.com/freeco … dwait.html.

Elle te permet de lancer un programme externe et d'attendre que le "process" soit terminer avant de continuer.

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » Comment savoir si l'écriture d'un fichier est terminé ou non ?

Pied de page des forums

Propulsé par FluxBB 1.2.22