Salve a tutti.
Ho un pogramma che genera un file, ma questo processo talvolta potrebeb essere molto lungo. Di conseguenza per evitare che l'utente si annoi nel vedere un cursore lampeggiante ho pensato di mostrare a video la percentuale del tempo residuo, confrontando il peso crescente del file creato con il peso che deve aggiungere.
utilizzo un thread per creare il file e conteggiare il tempo in contemporanea. Dunque, dato che preferisco non mostrare il programma vero e proprio, vi posto il sorgente di un altro programma, nel quale potrete aiutarmi più semplicemente, perchè l'unica cposa che fa è quella di creare un file. il thread parte in contemporanea al riempimento de file, ed il peso dovrebbe venire aggiornato, permettendo il calcolo della percentuale.
è ben commentato per permettervi una miglir visione del codice.
potrei avere includso tropi header, sono rimasti da precedenti tentativi
tuttavia non funziona. Sapreste dirmi dove è il problema?codice:#include <io.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <iostream.h> #include <windows.h> #include <iostream.h> #include <stdlib.h> #include <fstream.h> #include <time.h> float peso; FILE * fp; float percent; struct stat C; int funz1 () { _beep(800,300); //beep per verificare se il thread è partito, da rimuovere while ( (float(C.st_size)/1024/1024) != (1024*1024*10) ) { peso = float(C.st_size)/1024/1024; //in teoria aggiorna il peso printf("%6.3f MB\r", peso); } return 0; } int main() { DWORD dwThreadId, dwThrdParam = 1; FILE * A; srand ((unsigned) time(NULL)); A = fopen ("C:\\file.txt", "w+"); /// HANDLE thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) funz1, &dwThrdParam, 0, &dwThreadId); /// for (int i=0;i<=(1024*1024*10);i++) { int ran = rand() %1000+1; //crea un numero casuale tra 1 e 1000 fprintf(A, "%c", ran); //crea un file di testo a caso } fclose(A); int Exit; cin>>Exit; //serve ad evitare che il programma si concluda senza permettere all'utente di vedere il risultato }
Grazie in anticipo. Cordiali saluti. Ciaooo

Rispondi quotando