HomeProductsDownloadOrderSupportSearch
  
Myriad Forum « Linéarisation d'opérations »
 Welcome, Guest.
 You can read all messages, but to be able to post,
 please Login or Register.
Dec 4th, 2024, 9:47am 
   Myriad Forum
   MyrScript Language
(Moderator: Forum Administrator)
   Linéarisation d'opérations
« No topic | Next topic »
Pages: 1  Reply | Notify of replies | Print
   Author  Topic: Linéarisation d'opérations  (Read 29 times)
ANdre_B
Board Master
*****





   
Email

Gender: male
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: male
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: male
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)
Pages: 1  Reply | Notify of replies | Print

« No topic | Next topic »

« Myriad Forum » Powered by YaBB 1 Gold - SP 1.1!
YaBB © 2000-2002,
Xnull. All Rights Reserved.

Top of page
Legal information Cookies Last update:  (c) Myriad