[Visual Basic] Copiare file piu' grandi di 2 gb in vb6 senza usare filecopy,usando get e put

paolo71

Nuovo Utente
12 Lug 2018
7
0
1
Ho un problema,non riesco a copiare i file piu' grandi di 2 gb in vb6,li copio aprendo il file in modalità binaria e uso get e put ma come supera la grandezza di 2 gb mi da errore,con filecopy non da errore ma non si riesce a vedere a che punto sia la copia.
 

Rikk73

Utente Attivo
7 Apr 2015
137
6
18
Arezzo
Senza vedere alcun codice non è facile, ma la prima cosa che mi viene in mente (anche se sinceramente non ho mai avuto un'esigenza di questo tipo) è di provare a leggere tutto il file in uno FileStream, ed utilizzando un MemoryStream di "appoggio" copiarne un po' alla volta.
Non sono sicuro che funzioni, ma io proverei qualcosa del genere
 

paolo71

Nuovo Utente
12 Lug 2018
7
0
1
Senza vedere alcun codice non è facile, ma la prima cosa che mi viene in mente (anche se sinceramente non ho mai avuto un'esigenza di questo tipo) è di provare a leggere tutto il file in uno FileStream, ed utilizzando un MemoryStream di "appoggio" copiarne un po' alla volta.
Non sono sicuro che funzioni, ma io proverei qualcosa del genere
E' quello che il mio programma fa' in efetti,e' proprio un difetto di progettazione di visual basic,essendo il numero del record una variabile long,come super un certo numero da errore,ci vorrebbe al numero di record una variabile currency o double.
Praticamente copiano un po' alla volte tutti i programmi tranne che filecopy,ci vorrebbe un accesso ai dati della partizione credo.
 

paolo71

Nuovo Utente
12 Lug 2018
7
0
1
Senza vedere alcun codice non è facile, ma la prima cosa che mi viene in mente (anche se sinceramente non ho mai avuto un'esigenza di questo tipo) è di provare a leggere tutto il file in uno FileStream, ed utilizzando un MemoryStream di "appoggio" copiarne un po' alla volta.
Non sono sicuro che funzioni, ma io proverei qualcosa del genere
Si intende vo in visual basic 6 ,mi sa che non mi puo essere utile....
 

paolo71

Nuovo Utente
12 Lug 2018
7
0
1
si... bel problemino... e provare con un try catch? quando entri nel catch scrivi il buffer e poi ricominci, oppure metti un limite alla lettura (sto "pensando a voce alta" ...)

vedi se questo link ti può essere utile
https://simpledotnetsolutions.wordpress.com/2012/02/26/maximizing-the-streamreader/
Qella di scrivere il buffer non e' una buona idea ricorda che la dimensione del file e' da variabile currency o duble mentre put e get supportano solo variabili long..poi troppo sporco tanto vale usare file copy.....se vuoi ti mando il codice ma devi avere vb6 e un file superiore a 8gb a disposizione.....
 

Allegati

  • Copiareunfileinbinario.zip
    58,4 KB · Visite: 182

paolo71

Nuovo Utente
12 Lug 2018
7
0
1
private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: [email protected]
Dim Ret As Long
'set the graphics mode to persistent
Me.AutoRedraw = True
'print some text
Me.Print "Click the form to abort the filecopy"
'show the form
Me.Show
'start copying
Ret = CopyFileEx("c:\verybigfile.ext", "c:\copy.ext", AddressOf CopyProgressRoutine, ByVal 0&, bCancel, COPY_FILE_RESTARTABLE)
'show some text
Me.Print "Filecopy completed " + IIf(Ret = 0, "(ERROR/ABORTED)", "successfully")
End Sub
Private Sub Form_Click()
'cancel filecopy
bCancel = 1
End Sub


'in a module
Public Const PROGRESS_CANCEL = 1
Public Const PROGRESS_CONTINUE = 0
Public Const PROGRESS_QUIET = 3
Public Const PROGRESS_STOP = 2
Public Const COPY_FILE_FAIL_IF_EXISTS = &H1
Public Const COPY_FILE_RESTARTABLE = &H2
Public Declare Function CopyFileEx Lib "kernel32.dll" Alias "CopyFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long
Public bCancel As Long
Public Function CopyProgressRoutine(ByVal TotalFileSize As Currency, ByVal TotalBytesTransferred As Currency, ByVal StreamSize As Currency, ByVal StreamBytesTransferred As Currency, ByVal dwStreamNumber As Long, ByVal dwCallbackReason As Long, ByVal hSourceFile As Long, ByVal hDestinationFile As Long, ByVal lpData As Long) As Long
'adjust the caption
Form1.Caption = CStr(Int((TotalBytesTransferred * 10000) / (TotalFileSize * 10000) * 100)) + "% complete..."
'allow user input
DoEvents
'continue filecopy
CopyProgressRoutine = PROGRESS_CONTINUE
End Function


Trovato qui(restituisce pure la percentuale) https://www.experts-exchange.com/questions/20743248/Problem-Writing-Reading-a-File-2GB-HELP.html

testato con 10 gb di piu' fatelo voi ma dovrebbe funzionare,mi fido!!!!
 
Ultima modifica di un moderatore:
Discussioni simili
Autore Titolo Forum Risposte Data
felino Porting da Visual Basic a C# .NET Framework 3
A [Visual Basic] Frattali in 3 dimensioni Visual Basic 0
StephenSoftware [Visual Basic] Da VB6 a VB.NET Visual Basic 0
D [Visual Basic] [MS Access] query con parametro di testo Visual Basic 4
V [Visual Basic] Richiamare funzione su modulo per restituire list Visual Basic 0
A [Visual Basic] Trasformare stringa in ora Visual Basic 0
B [Visual Basic] Passaggio variabili da un progetto all'altro (Visual Studio 2017 C#/SQL) Visual Basic 0
A [Visual Basic] Consiglio sul datagridview Visual Basic 0
C [Visual Basic] Errore INSERT su DB MySQL (VB.Net) Visual Basic 4
P [Visual Basic] access sql estrarre id vendite x cli e articolo con data maggiore del recordset Visual Basic 2
italo_vb6 [Visual Basic] DirListBox Visual Basic 0
P [Visual Basic] Come riprodurre file avi caricati come risorsa con vb 10 Visual Basic 0
P Riproduzione avi file in una picture box da file .dll .ocx ed altri in visual basic 10 express Offerte e Richieste di Lavoro e/o Collaborazione 0
M [Visual Basic] Cambiare lo stato in checked delle checkbox richiamando dati dal database Visual Basic 6
M [Visual Basic] Creare checkbox dinamicamente in TabControl Visual Basic 1
N [Visual Basic] Dichiarare AxWebBrowser in che versione opera Visual Basic 0
M [Visual Basic] Cercare un file pdf all'interno di una cartella attraverso il valore di una txtbox Visual Basic 1
V [Visual Basic] ottenere info su sistema Visual Basic 1
V [Visual Basic] trovare versione di un .exe con vb6 Visual Basic 0
E connessione db in visual basic 2010 Visual Basic 1
S [Visual Basic] access 2010 click su pagina html Visual Basic 1
T [Visual Basic] Criptazione tramite matrice Visual Basic 0
S [Visual Basic] AIUTO - CERCO GUIDA Visual Basic 0
K [Visual Basic] Stampa e modifica record non funziona più Visual Basic 0
I inserimento data in tabelle da visual basic MySQL 0
L Salve sto per iniziare il Visual Basic Visual Basic 1
Z Conversione codice da visual basic a visual.... .NET Framework 1
maxbossi Regolamento Regolamento forum Visual Basic - leggere con attenzione! Visual Basic 0
C Creare semplice timer in Visual Basic Visual Basic 0
Y Connessione Visual Basic con DataBase Access? MS Access 0
F Visual basic 2010 e excel 2007 .NET Framework 1
C [Visual Basic] Installare un programma con pacchetto di installazione Visual Basic 0
E [Visual basic 2008]Orologio Visual Basic 0
L guida o corso per imparare visual basic Visual Basic 0
G [VISUAL BASIC]caricare dati in un database da una console application Visual Basic 3
R Visual Basic ed Access Visual Basic 1
S Come si "moltiplica" un oggetto in Visual basic 6? Visual Basic 3
C Stampare con visual basic Visual Basic 0
M [Visual Basic] Conversione XLS in PDF, urgente! Programmazione 2
neo996sps [Visual Basic Express] Salvare i dati in un DB Access Programmazione 1
G Ricerca in Visual Basic Visual Basic 1
V Visual Basic Access97 - stampare su file PDF Visual Basic 0
F visual basic Visual Basic 0
T visual basic e mdb remoto Visual Basic 16
M [Visual Basic 6.0]Immagine di un bottone Programmazione 2
R visual basic su pocket pc Visual Basic 1
GENZIANA Manuale Visual Basic in italiano? Visual Basic 2
G Visual basic deallocazione istanza classe Visual Basic 1
G Visual basic deallocazione istanza classe Windows e Software 0
M Visual Basic: come aprire il pannello di controllo Visual Basic 6

Discussioni simili