Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245

    [VB6] Copia file bloccata

    Ciao.
    Con la mia applicazione devo fare la copia di alcuni file in una sottocartella.
    Il problema è che se lo faccio con file di grosse dimensioni (700 MB) il programma si blocca totalmente, un po' come se non usassi DoEvents in un ciclo abbastanza lungo.
    Se però la copia la faccio a mano, il file viene copiato in qualche secondo e non in diversi minuti.

    Come copio i file senza bloccare l'applicazione ?

    Grazie
    ... e non usare while wend è una sintassi deprecata

  2. #2
    Utente di HTML.it L'avatar di pireda
    Registrato dal
    Jul 2001
    Messaggi
    654
    Che istruzioni usi per fare la copia del file?
    Maddalena... Perché proprio Iacchetti!...

  3. #3
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Uso la FileCopy
    ... e non usare while wend è una sintassi deprecata

  4. #4
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Ho provato a fare qualche ricerca ed ho trovato un'API, la CopyFile ma usandola arrivo sempre al blocco dell'applicazione.
    Come faccio la copia dei file senza bloccare l'applicazione ?
    ... e non usare while wend è una sintassi deprecata

  5. #5
    Hai provato a usare un oggetto del tipo FileSystemObject, come ad esempio
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.Copyfile FileOrigine, PathDestinazione, True
    Set fso = Nothing

    ?
    Sem nasù per patì, patèm!

  6. #6
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    No, ma dopo il tuo consiglio ho provato.
    Si è però ripresentato lo stesso problema...
    Non è possibile neanche fermare l'esecuzione in modalità debug perchè resta in attesa della completa esecuzione dell'istruzione, che però blocca il programma
    ... e non usare while wend è una sintassi deprecata

  7. #7
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Nessuno ha mai copiato file di grosse dimensioni in VB6 ???
    ... e non usare while wend è una sintassi deprecata

  8. #8
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Casualmente ho trovato una procedura descritta nel MSDN (http://msdn.microsoft.com/library/it...tocopyfile.asp).
    Ma in che modo è possibile utilizzarla ?
    ... e non usare while wend è una sintassi deprecata

  9. #9
    io di solito delego questi compiti nel senso che:
    codice:
    ' procedura che copia
        Open App.Path & "\copia.bat" For Output As #iFile
            Print #iFile, "xcopy " & Filesorgente & " " & filedest
        Close #iFile
        
        ShellAndWait App.Path & "\copia.bat", vbHide
        
        Kill App.Path & "\copia.bat"
    codice:
    Private Declare Function OpenProcess Lib "kernel32" _
        (ByVal dwDesiredAccess As Long, _
        ByVal bInheritHandle As Long, _
        ByVal dwProcessId As Long) As Long
    
    Private Declare Function GetExitCodeProcess Lib "kernel32" _
        (ByVal hProcess As Long, lpExitCode As Long) As Long
    
    Private Declare Function CloseHandle Lib "kernel32" _
        (ByVal hObject As Long) As Long
    
    Private Const STATUS_PENDING = &H103&
    
    Public Sub ShellAndWait(sFile As String, Visualizzazione As Long)
    Dim hProcess As Long
    Dim ProcessId As Long
    Dim CodExit As Long
    
        ProcessId = Shell(sFile, Visualizzazione)
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcessId)
        Do
            Call GetExitCodeProcess(hProcess, CodExit)
            DoEvents
        Loop While CodExit = STATUS_PENDING
    
        Call CloseHandle(hProcess)
    End Sub
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  10. #10
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Ti ringrazio molto per la tua risposta.
    Ho capito il tipo di operazione, solo che ho riscontrato qualche problema con l'esecuzione.

    Se eseguo il comando XCOPY senza nessun parametro succede che l'operazione non si conclude mai, in quanto nascondendo la finestra (vbHide) non ci si accorge che viene richiesto se si tratta di un file o di una directory.
    Se però includo il parametro /i la copia avviene con successo ma senza conclusione. Guardando i processi attivi infatti trovo Winoldap.
    Lo stesso problema si ripete con il comando COPY (operazione conclusa ma processo attivo).

    Come posso risolvere ?
    ... e non usare while wend è una sintassi deprecata

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.