Barre de progressionRe : JSL fournit-il un indicateur "occupé" similaire à une roue ou à une barre qui tourne ?
voici un exemple d'indicateur de progression réalisé en JSL ; il utilise un espace de noms pour encapsuler le code.Les dernières lignes sont un test, essayez de définir charge de travail plus grand ou plus petit.Pour des performances fluides, la fonction progress:set doit être appelée assez souvent. La fonction progress:init doit connaître la quantité totale de travail qui sera effectuée pour obtenir le bon pourcentage.
Edit : joint une copie du JSL, apparemment le JSL en ligne peut ne pas s'afficher correctement.

progress = New Namespace(
"progress"
);
progress:init = Function( {workload},
progress:TotalWork = workload;
progress:Current = -1;
progress:tick = Tick Seconds();
progress:Window = New Window( "progress",
H List Box(
Spacer Box( size( 20, 20 ) ),
progress:busy = Busy Light( <<SIZE> 1 / 30,
progress:tick = now;
If( pct != progress:Current,
progress:Current = pct;
progress:left << size( progress:Current, 20 );
progress:right << size( 100 - progress:Current, 20 );
progress:text << settext( Char( pct ) || "%" );
);
progress:busy << advance;
Wait( 0 );
)
);
progress:term = Function( {},
progress:Window << closeWindow
);
/////////////////////////
// test
/////////////////////////
workload = 1e6; // 1e6 is about 5 seconds
progress:init( workload );
For( i = 1, i <= workload, i++,
progress:set( i )
);
progress:term();</SIZE>
Re : Barre de progressionBonne question.
Le test dont vous parlez est conçu pour éviter de mettre à jour l'affichage plus de 30 fois par seconde, ce qui serait une perte de temps. En fait, sans ce test, l'exemple mettrait à jour l'affichage un million de fois et prendrait beaucoup de temps à s'exécuter.
L'exemple suppose qu'il y a 1e6 fichiers. Vous devez écrire une boucle similaire aux 6 dernières lignes de code, en effectuant le traitement de votre fichier juste avant progression:set(i) . Et changez le 1e6 en votre nombre de fichiers.
Re : Barre de progressionSalut Craige
Merci pour votre partage sur la barre de progression.
J'aimerais surveiller le nombre de fichiers traités avec la barre de progression.
Ainsi, ma "charge de travail" n'est pas une question de "temps" mais de "compte". (N fichiers dans le dossier)
Est-ce que cela signifie que je devrais supprimer "progress:tick" et la phrase
If( now - progress:tick > 1 / 30,
progress:tick = now;
Pourriez-vous me donner quelques conseils.
Merci.