Author |
Topic: Linéarisation d'opérations (Read 29 times) |
|
ANdre_B
Board Master
Email
Gender:
Posts: 3052
|
|
Linéarisation d'opérations
« on: Nov 30th, 2024, 1:15pm » |
Quote | Modify
|
Pour différentes applications (pas toujours strictement musicales), je passe par l'exécution d'un fichier .bat. Par exemple, pour créer un fichier "dir" (que j'analyse ensuite): Quote:BF,rc = OpenFile("dir.bat","w+") if rc then Message("Error",rc) exit() end RemoveFile("list.txt") BF.WriteString("dir >list.txt\r") BF.Close() OpenFileWithDefaultApplication("dir.bat") FL,rc = OpenFile("list.txt","r") if rc then print("File not available (",rc,")") else print("File available") FL.Close() end |
| Mais la vérification finale que le fichier a été correctement créé (pour continuer le traitement) va en général l'indiquer comme non disponible. Simplement parce que l'exécution du script continue sans attendre la fin de l'OpenFileWithDefaultApplication. Si je ne mets pas de RemoveFile, te test est bon et le traitement peut commencer avec un fichier préexistant, ce qui donne parfois des surprises quant au résultat. Je reconnais qu'il y a des cas ou l'asynchronisme présente des avantages... mais y a-t-il une méthode standard pour forcer ma "linéarisation" lorsqu'on la souhaite? Merci!
|
|
offline |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
Sylvain Machefert
Administrator
WWW |
Gender:
Posts: 7284
|
|
Re: Linéarisation d'opérations
« Reply #1 on: Nov 30th, 2024, 2:27pm » |
Quote | Modify
|
Salut, 1) supprime le fichier, 2) lance le bat comme tu fais 3) une boucle tant que FileExist(...) ~= true Code:while FileExist(resultat.txt) ~= true do Application.WaitDelay(5) end |
| 4) lecture du fichier resultat.txt Pour le parcours d'un répertoire, il y a la fonction BrowseFolder(...) mais celle-ci nécessite une fonction "callback" qui est appelée pour chaque fichier. Ça convient bien pour un traitement par lot. Si tu veux avoir la liste des fichiers, faire une fonction callback qui alimente juste une table, c'est le bulldozer pour écraser une mouche. Je l'ai donc fait une bonne fois pour toute. Si tu as téléchargé ma librairie SMCore, il y a la fonction GetFilesInFolder (click sur le lien pour la documentation)
|
|
offline |
HA+HQ+VS+PdfToM, Reaper+Audiveris+Transcribe, Win10+Focusrite Scarlet 4i4+Nord Electro 3 Linktree: VS languages, my scripts, my bands, my performances...
|
|
|
ANdre_B
Board Master
Email
Gender:
Posts: 3052
|
|
Re: Linéarisation d'opérations
« Reply #2 on: Nov 30th, 2024, 5:20pm » |
Quote | Modify
|
Merci Sylvain Oui c'est le genre de choses que je fais, mais ça heurte un peu mon caractère rationnel. Je ne me souviens plus du détail, mais j'ai déjà rencontré le problème d'asynchronisme dans un tout autre cas. La nouvelle fonction, permettant d'exécuter n'importe quelle commande, aurait-elle une solution? Oui je connais BrowseFolder, mais ici je ne veux pas utiliser le nom des fichiers, mais un attribut (la taille, éventuellement la date).
|
|
offline |
André Baeck, de retour en Belgique après 12 ans passés dans le Gard. Windows 11, HA 997e (et précédents)
|
|
|
|