Barra di avanzamentoRi: JSL fornisce un indicatore "occupato" simile a una ruota che gira o una barra?
ecco un esempio di indicatore di avanzamento realizzato in JSL; utilizza uno spazio dei nomi per incapsulare il codice.Le ultime righe sono un test, prova a impostare carico di lavoro più grande o più piccolo.Per prestazioni fluide, la funzione progress:set deve essere chiamata abbastanza spesso. La funzione progress:init deve conoscere la quantità totale di lavoro che verrà eseguita per ottenere la percentuale corretta.
Modifica: allegata una copia del JSL, apparentemente il JSL in linea potrebbe non essere visualizzato correttamente.

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>
Ri: barra di avanzamentoBuona domanda.
Il test di cui stai chiedendo è progettato per impedire l'aggiornamento del display più di 30 volte al secondo, il che sarebbe una perdita di tempo. In effetti, senza quel test, l'esempio aggiornerebbe il display un milione di volte e impiegherebbe molto tempo per essere eseguito.
L'esempio presuppone che ci siano 1e6 file. Dovresti scrivere un ciclo simile alle ultime 6 righe di codice, eseguendo l'elaborazione del file appena prima progresso:set(i) . E cambia 1e6 con il tuo numero di file.
Ri: barra di avanzamentoCiao Craig
Grazie per la tua condivisione sulla barra di avanzamento.
Mi piacerebbe monitorare quanti file sono stati elaborati con la barra di avanzamento.
Quindi, il mio "carico di lavoro" non riguarda il "tempo" ma il "conteggio". (N file nella cartella)
Significa che dovrei eliminare "progress:tick" e la frase
If( now - progress:tick > 1 / 30,
progress:tick = now;
Potresti darmi dei consigli.
Grazie.