Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    [vb6] ennesimo problea per aprire file

    codice:
    With MDIForm1.CommonDialog1
            .CancelError = True             'Imposta CancelError su True
        On Error GoTo ErrHandler
            .Filter = "Discorsi interni (*.dsi)|*.dsi|Discorsi esterni (*.dse)|*.dse"
            .FilterIndex = 1
            .DefaultExt = "dsi"
            .Flags = cdlOFNNoChangeDir Or cdlOFNHideReadOnly Or cdlOFNFileMustExist Or cdlOFNNoReadOnlyReturn
            .DialogTitle = "Selezionare il file da aprire"
            .InitDir = app.Path & "\save"
            .FileName = MDIForm1.CommonDialog1.FileName
            .ShowOpen
           
            
    ErrHandler:
            If Err.Number = 32755 Then      'é stato scelto Annulla 
                boolErrAnnSP2 = True
                Exit Sub
                Else: boolErrAnnSP2 = False
            End If
            
            FileName = .FileName   
            FileTitle = .FileTitle
    'Visualizza nome e percorso del file in uso nella Barra di stato:
            MDIForm1.StatusBar1.Panels(2).Text = "File: " & MDIForm1.CommonDialog1.FileTitle
            FileNum = FreeFile()
    
    'Esce se l'utente ha fatto clic su annulla
                If Len(FileName) = 0 Then
                    Exit Sub
                End If
        End With
        'apre il file
        estensione = Right(FileName, 3)
        Open FileName For Input As FileNum
        Select Case estensione
        Case Is = "dsi"
        For k = 0 To 9
        Input #FileNum, dati(k).campo8, dati(k).campo2, dati(k).campo3, dati(k).campo4, dati(k).campo5, dati(k).campo7
        Next k
        Call trovanumdiscorso
        apricode = True
        frmcreaprogint.Show
        frmstampa.Show
        savecode = True
        Case Is = "dse"
        End Select
        Close #FileNum
    End Sub
    Il codice che ho riportato sopra funziona in maniera strana.Se avvio la mia applicazione da zero mi apre il file senza grossi problemi. Il guaio accade quando ho il programma aperto e prima di aprire un file ,lavoro con un altro e lo salvo.

    In questo caso mi rimanda alla linea evidenziata di rosso dicendomi variabile del blocco width non impostata.

    Facendo il debug noto che in effetti quella riga viene correttamente eseguita. Il problema si verifica
    nella riga di codice

    codice:
    Open FileName For Input As FileNum
    dove filenum vale due.
    In questo caso mi ricomicia la procedura nuovamente partendo dalla gestione dell'errore(riga in blu)
    e poi mi da l'errore.
    Come mai accade una cosa del genere? Come posso rimediare?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    rispondo nel caso qualcuno avesse simili problemi.
    nella fase di salvataggio del file non lo chiudevo.per questo mi diceva che il primo file disponibile era il 2.

    Essendo il file ancora aperto non riusciva ad accedere
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Non capisco la funzione dell'etichetta ErrHandler, se è una gestione d'errore, gestiscila a parte e non nella procedura.
    Rilevi la pressione del tasto Annulla sia in base al numero d'errore che alla lunghezza della stringa restituita. Perchè non scegli il secondo caso ?
    ... e non usare while wend è una sintassi deprecata

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    a dire il vero è un procedura fatta da qualcunoi del forum
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ehm mi dici quale è il prolema e come risolverlo?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    L'unica cosa che non và nella gestione di "Annulla della CD" è il commento inserito in
    'Esce se l'utente ha fatto clic su annulla
    If Len(FileName) = 0 Then
    Exit Sub
    End If
    dato che se l'utente ha fatto clic su Annulla l'evento è gestito da:
    ErrHandler:
    If Err.Number = 32755 Then 'é stato scelto Annulla
    boolErrAnnCD2 = True
    Exit Sub
    Else: boolErrAnnCD2 = False
    End If
    In effetti If Len(FileName) = 0 Then .... protegge la routine da un eventuale errore interno del programma, dopo la selezione del Nome del File e prima che la routine inizi: Open FileName For Input As FileNum.
    E' vero che se non viene selezionato il percorso ed il nome di un file Len dà 0, ma non nel contesto della routine in esame (ed è facilmente rilevabile, perchè FileName = FrmCoDir.CommonDialog1S.FileName, quindi anche se l'utente ha fatto clic su Annulla FileName è >0, pertanto Non verrebbe rilevato l'evento Annulla).
    Se la routine fallisce l'apertura del File, il motivo Non è da ricercare in questa parte del codice.
    LM

  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    e quindi?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  9. #9
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciro,
    sull'argomento ho già risposto due volte,
    Ciao.
    LM

  10. #10
    il problema sembra nella gestione dell'errore

    come la scrivi tu ci entra sempre

    fai così

    codice:
    on error goto OUT
    'procedura normale
    exit sub ' o function
    OUT:
    close
    if Err.Number = 32755 then
    
       Exit Sub
    
    end if
    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

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.