Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C++] mostrare a video la percentuale della creazione di un file durante...

    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
    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
    
    }
    tuttavia non funziona. Sapreste dirmi dove è il problema?
    Grazie in anticipo. Cordiali saluti. Ciaooo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho letto tutto il codice con attenzione, ma una cosa non mi torna ...

    Quella struttura

    struct stat C;

    da quale parte del codice viene riempita?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Oltre a quello e ad altri orrori di codice, manca una WaitForSingleObject(hthread) prima di int Exit.

  4. #4
    la spiegazione è molto semplice.
    Non sapendo come eseguire più operazioni contemporaneamente e come misurare il peso di un file ho letto su vari forum. Tra i vari metodi questa è una mescolanza. è naturale che possa essere alquanto strana e assurda. il compilatore non da errore.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma non hai risposto alla mia domanda ne' all'osservazione di shodan ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Dunque, ho trovato questi metodi in dei forum.
    Per il metodo che ho scelto per trovare la dimensione del file è necessario avere quella struttura
    codice:
    struct stat C
    anche se poi non viene riempita.
    per il peso dei file c'erano altri metodi, questo è solo l'ìultimo che ho provato, prima di chiedervi una mano.
    Per quanto riguarda l'istruzione relativa ai thread che mi avete detto, perdonatemi ma non conoscevo neanche quella.
    Non sono poi così ignorante, è solo che in questo momento stò armeggiando con funzioni di cui so troppo poco....
    Vi ringrazio ancora per l'aiuto che mi state dando.

  7. #7
    Dunque, ho trovato questi metodi in dei forum.
    Per il metodo che ho scelto per trovare la dimensione del file è necessario avere quella struttura
    codice:
    struct stat C
    anche se poi non viene riempita.
    per il peso dei file c'erano altri metodi, questo è solo l'ìultimo che ho provato, prima di chiedervi una mano.
    Per quanto riguarda l'istruzione relativa ai thread che mi avete detto, perdonatemi ma non conoscevo neanche quella.
    Non sono poi così ignorante, è solo che in questo momento stò armeggiando con funzioni di cui so troppo poco....
    Vi ringrazio ancora per l'aiuto che mi state dando.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Sprunk
    ... anche se poi non viene riempita.
    Beh ... ma e' questo il problema ! Se non la riempi con una chiamata apposita, a cosa serve?

    ... è solo che in questo momento stò armeggiando con funzioni di cui so troppo poco....
    Perdonami ... ma e' questa l' "ignoranza" ... non sapere quello che si fa perche' non lo si conosce ...

    Se hai un problema, dovresti studiare prima gli "stumenti" che vuoi utilizzare per risolverlo, altrimenti non potrai mai utilizzarli con successo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    cercando su google non ho trovato un granchè sui thread.
    Di metodi per il calcolo del peso dei file ne ho provati 2 o 3.
    Se non avessi già provato non mi sarei rivolto a voi.
    Vi chiedo gentilmente, per evitare inutili off topic, invece di darmi dell'ignorante di aiutarmi a trovare una soluzione al problema. Grazie.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Sprunk
    cercando su google non ho trovato un granchè sui thread.
    Internet e' pieno zeppo di informazioni sui thread ... figurati ... ma bisogna saperli cercare e sfruttare ...

    Di metodi per il calcolo del peso dei file ne ho provati 2 o 3.
    In realta' NON c'e' nessun bisogno di usare un altro thread ... a meno che il tuo programma non debba fare "altro" mentre sta creando il file.

    Altrimenti, puoi visualizzare lo stato dell'operazione di scrittura nello stesso ciclo for che ti serve a scrivere il file ...

    Vi chiedo gentilmente, per evitare inutili off topic, invece di darmi dell'ignorante di aiutarmi a trovare una soluzione al problema. Grazie.
    Sei stato tu a dire di non essere "poi cosi' ignorante", non noi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.