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.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
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
dove filenum vale due.codice:Open FileName For Input As FileNum
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?

Rispondi quotando