Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Copia file
Forum - C# / VB.NET - Copia file - Pagina 5

Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:28
Domenica, 02/07/2017
Maximum è un Int32 quindi non puoi assegnare valori superiori ai 2 giga.

Devi assegnare un valore massimo accettabile e lavorare con le proporzioni


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 0:38
Sabato, 08/07/2017
Ciao a tutti e scusate per la risposta in ritardo.

Non so come agire, le prove sono quelle effettuate in precedenza più di quello no so cosa fare, scusate ma non sono esperto. Sto continuando a cercare in rete ma ancora niente.
Ma non mi arrendo continuerò a cercare spero di risolvere.

Grazie a tutti per l'aiuto.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 6:27
Sabato, 08/07/2017
Perché scrivi nei forum se le risposte non le leggi?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 16:00
Sabato, 08/07/2017
Scusa perché dici che non leggo le risposte, quando ho scritto che non so come agire.
Mi hai scritto che la progressbar accetta un valore int e di dare un valore accettabile, che valore devo dare?

Ultima modifica effettuata da lupetto77 il 08/07/2017 alle 16:02
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 18:18
Sabato, 08/07/2017
Testo quotato

Postato originariamente da lupetto77:
Scusa perché dici che non leggo le risposte



Perché prima non hai detto nulla dell'indicazione che ti avevo appena dato, come se non l'avessi letta.

Testo quotato

Mi hai scritto che la progressbar accetta un valore int



Veramente ho detto Int32

Testo quotato

e di dare un valore accettabile, che valore devo dare?



Ecco, adesso stai partecipando.

Dato che è una Int32, come ti ho detto, NON puoi passare valori maggiori di 2G e quindi non puoi passare la lunghezza in byte dei file (perché potrebbero essere maggiori).

Una possibilità è

1) se il valore Maximum è minore di 2G, passi i valori così come sono (sia per Maximum sia per Value)

2) altrimenti dividi i valori Maximum e Value per 1000 (ovviamente prendi la parte intera).

In questo modo lavori fino a 2T



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 21:41
Sabato, 08/07/2017
Ciao nessuno siccome ero e sono da cellulare per abbreviare avevo scritto int invece di int32 speravo che si capiva.
Quando torno sul pc faccio delle prove e vi faro' sapere grazie per l'aiuto.

PM Quote
Avatar
lupetto77 (Normal User)
Pro


Messaggi: 75
Iscritto: 04/12/2011

Segnala al moderatore
Postato alle 2:22
Mercoledì, 12/07/2017
Ciao ho fatto questa prova:

Ho modificato cosi la funzione Copia:
Codice sorgente - presumibilmente C# / VB.NET

  1. /// <summary>
  2.         /// Funzione Copia Tutto
  3.         /// </summary>
  4.         /// <param name="lable1">Label su cui applicare le modifiche</param>
  5.         /// <param name="progressBar1">Progressbar su cui applicare le modifiche</param>
  6.         /// <param name="source">Cartella sorgente</param>
  7.         /// <param name="target">Cartella di destinazione</param>
  8.         public void Copia(Label label, ProgressBar progressBar1, DirectoryInfo source, DirectoryInfo target)
  9.         {
  10.             //Controllo se esiste la directory di destinazione altrimenti la creo
  11.             if (Directory.Exists(target.FullName) == false)
  12.             {
  13.                 Directory.CreateDirectory(target.FullName);
  14.             }
  15.  
  16.             foreach (FileInfo fi in source.GetFiles())
  17.             {
  18.                 Invoke((Action)delegate
  19.                 {
  20.                     fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
  21.  
  22.                     totali += (int)fi.Length;
  23.  
  24.                     //copiati += (int)fi.Length;
  25.                     //copiati /= 1024;
  26.                     //progressBar1.Step = copiati;
  27.                     //progressBar1.PerformStep();
  28.  
  29.                     copiati += (int)fi.Length;
  30.                     if(fi.Length < 2000000000)
  31.                     {
  32.                         progressBar1.Step = copiati;
  33.                         progressBar1.PerformStep();
  34.                     }
  35.                     else
  36.                     {
  37.                         copiati /= 1024;
  38.                         //maxbytes /= 1024; //Ho provato con e senza questa riga
  39.                         progressBar1.Step = copiati;
  40.                         progressBar1.PerformStep();
  41.                     }
  42.                    
  43.                     label.Text = (totali / 1024).ToString() + "KB di " + maxbytes.ToString() + "KB copiati";
  44.                     label.Refresh();
  45.                 });
  46.             }
  47.  
  48.             foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
  49.             {
  50.                 DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name);
  51.                 Copia(label, progressBar1, diSourceSubDir, nextTargetSubDir);
  52.             }
  53.         }



Nel btnCopia ho provato cosi:
Codice sorgente - presumibilmente C++

  1. //Avvio del processo
  2.         private void btnCopia_Click(object sender, EventArgs e)
  3.         {
  4.             DirectoryInfo diSource = new DirectoryInfo(source);
  5.             DirectoryInfo diTarget = new DirectoryInfo(dest);
  6.  
  7.             //Creo un ciclo veloce per recuperare
  8.             //prima tutti i bytes totali di tutti i file contenuti
  9.             //nelle cartelle e sottocartelle, la funzione è un ciclo
  10.             //che man mano incrementa la variabiale maxbytes.
  11.             GetSize(diSource, diTarget);
  12.             maxbytes = maxbytes / 1024; //Ho provato con e senza questa riga
  13.  
  14.             progressBar1.Maximum = maxbytes;
  15.             Thread t = new Thread(() => Copia(label2, progressBar1, diSource, diTarget));
  16.             //Copia(label4, progressBar1, diSource, diTarget);
  17.             t.Start();
  18.            
  19.             MessageBox.Show("Completato...");
  20.         }



Quando avvio il programma mostra il MessageBox e la finestra rimane bloccata fino al termine della copia dei file.

Ultima modifica effettuata da lupetto77 il 12/07/2017 alle 2:23
PM Quote
Pagine: [ 1 2 3 4 5 ] Precedente | Prossimo