psycho85 (Ex-Member)
Pro
Messaggi: 72
Iscritto: 20/08/2006
|
Raga, il problema è questo...
Sto scrivendo un programma stile blocco note per creare, aprire e salvare file di testo. Uso il CommonDialog per accedere alle finestre "Apri e Salva".
Tutto funziona, c'è solo un problema!!!
Sia nella schermata APRI sia in quella SALVA,se viene premuto il tasto "ANNULLA" e quindi l'utente dedice di non aprire o non salvare il file, viene fuori l'errore
ERRORE di run-time '75':
Errore di accesso al percorso/file
Ho visto che c'è la possibilitàdi usare le api per utilizzare queste schermate ma sono piene di comandi che non capisco ancora e quindi non voglio inserire del codice che non capisco nel mio programma.
c'è la possibilità di gestire il comando ANNULLA ed eliminare questo BUG?
Ecco il code che utilizzo:
Procedura per salvare il file
Istruzioni precedenti
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Input As #1
strTesto = Input(LOF(1), 1)
Close 1
Istruzioni successive
|
|
natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
Non puoi utilizzare il comando "showopen" perchè questo comando seleziona un file che già esiste e non uno che dovrai salvere.
Ti consiglio di usare la funzione "showsave".
Comunque potresti utilizzare questo codice:
Codice sorgente - presumibilmente VB.NET |
sub salva() With CommonDialog1 .DialogTitle = "Salva" .CancelError = False .Filter = "File di tipo testo(*.txt)|*.txt" .ShowSave If Len(.FileName) = 0 Then msgbox "Non hai dato un nome al file", vbExclamation exit sub else call scrivi(.FileName) end if End With end sub sub scrivi (file as string) Open file For Input As #1 strTesto = Input(LOF(1), 1) Close 1 end sub
|
Vedi che questa funzione l'ho pensata e scritta, senza provarla.
Perciò se ci sono dei bug contattami che li possiamo risolvere insieme.
In bacca al lupo
Ultima modifica effettuata da natamas il 02/09/2006 alle 14:17 |
|
psycho85 (Ex-Member)
Pro
Messaggi: 72
Iscritto: 20/08/2006
|
natamas provo a vedere cosa riesco a combinare, ti faccio sapere al più presto...grazie per il code e per la tua disponibilità
|
|
psycho85 (Ex-Member)
Pro
Messaggi: 72
Iscritto: 20/08/2006
|
Allora, diciamo che ci ho ragionato su un'attimo e con il tuo code possiamo sia aprire sia salvare file senza nessun problema. Voglio solamente dirti che sono un principiante e tutto quello che so l'ho imparato qua e la quindi non ti spaventare se faccio qualche GAF di scrittura del code...
Ho messo sul form il commondialog, una textbox e due command button (APRI E SALVA) ed ecco il code:
-------------------->Inizio Code<-----------------
Dim strTesto As String 'Variabile che contiene il testo
Sub Apri() 'Procedura per l'apertura dei file
With CommonDialog1
.DialogTitle = "Apri"
.CancelError = False
.Filter = "File di tipo testo(*.txt)|*.txt"
.ShowOpen
If Len(.FileName) = 0 Then
MsgBox "Non hai dato un nome al file", vbExclamation
Exit Sub
Else
Call ProceduraApri(.FileName)
End If
End With
End Sub
Sub Salva()
With CommonDialog1
.DialogTitle = "Salva"
.CancelError = False
.Filter = "File di tipo testo(*.txt)|*.txt"
.ShowSave
If Len(.FileName) = 0 Then
MsgBox "Non hai dato un nome al file", vbExclamation
Exit Sub
Else
Call ProceduraSalva(.FileName)
End If
End With
End Sub
Sub ProceduraApri(file As String)
Open CommonDialog1.FileName For Input As #1
strTesto = Input(LOF(1), 1)
Close 1
txtTesto.Text = strTesto
End Sub
Sub ProceduraSalva(file As String)
Open CommonDialog1.FileName For Output As #1
Print #1, txtTesto.Text
Close 1
txtTesto.Text = strTesto
End Sub
Private Sub Command1_Click()
Apri
End Sub
Private Sub Command2_Click()
Salva
End Sub
-------------------->Fine Code<-------------------
Questo codice FUNZIONA l'ho testato sia in apertura che in salvataggio, ovviamente necessita di qualche ritocchino per migliorarlo.
Cosa più importante che IL FAMOSO BUG l'abbiamo eliminato, adesso se si preme il pulsante "INDIETRO" nelle finestre APRI O SALVA non viene visualizzato più l'errore....
|
|
natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
Sub ProceduraApri(file As String)
Open CommonDialog1.FileName For Input As #1
strTesto = Input(LOF(1), 1)
Close 1
txtTesto.Text = strTesto
End Sub
Sub ProceduraSalva(file As String)
Open CommonDialog1.FileName For Output As #1
Print #1, txtTesto.Text
Close 1
txtTesto.Text = strTesto
End Sub
|
se tu richiami la funzione "procedurasalva" e "proceduraapri" e ad entrambi mandi l'informazione che vogliono, cioè "file as string", non c'è bisogno di mettere nella funzione open nuovamente il commondialog1.filename, ma basta inserire "file", cioè l'informazione che tu gli hai mandato quando hai chiamato la funzione.
Eempio:
Codice sorgente - presumibilmente VB.NET |
Sub ProceduraApri (file As String) Open file For Input As #1 strTesto = Input(LOF(1), 1) Close 1 txtTesto.Text = strTesto End Sub Sub ProceduraSalva (file As String) Open file For Output As #1 Print #1, txtTesto.Text Close 1 txtTesto.Text = strTesto End Sub
|
Altrimanti se vuoi fare come dici tu ti consiglio di modificare così il codice:
Codice sorgente - presumibilmente VB.NET |
Dim strTesto As String 'Variabile che contiene il testo Sub Apri() 'Procedura per l'apertura dei file With CommonDialog1 .DialogTitle = "Apri" .CancelError = False .Filter = "File di tipo testo(*.txt)|*.txt" .ShowOpen If Len(.FileName) = 0 Then MsgBox "Non hai dato un nome al file", vbExclamation Exit Sub Else Call ProceduraApri End If End With End Sub Sub Salva() With CommonDialog1 .DialogTitle = "Salva" .CancelError = False .Filter = "File di tipo testo(*.txt)|*.txt" .ShowSave If Len(.FileName) = 0 Then MsgBox "Non hai dato un nome al file", vbExclamation Exit Sub Else Call ProceduraSalva End If End With End Sub Sub ProceduraApri() Open CommonDialog1.FileName For Input As #1 strTesto = Input(LOF(1), 1) Close 1 txtTesto.Text = strTesto End Sub Sub ProceduraSalva() Open CommonDialog1.FileName For Output As #1 Print #1, txtTesto.Text Close 1 txtTesto.Text = strTesto End Sub Private Sub Command1_Click() Apri End Sub Private Sub Command2_Click() Salva End Sub
|
Fammi sapere,ciao
Ultima modifica effettuata da natamas il 04/09/2006 alle 13:28 |
|
psycho85 (Ex-Member)
Pro
Messaggi: 72
Iscritto: 20/08/2006
|
Ciao, ho esaminato le due possibilità e sono arrivato ad una conclusione...tra poco invio sul form il codice con la spiegazione....
|
|
psycho85 (Ex-Member)
Pro
Messaggi: 72
Iscritto: 20/08/2006
|
Ho creato un modulo e all'interno ho inserito il seguente code:
--------------Inizio Codice Modulo---------------
Sub ProceduraApri(file As String)
Open file For Input As #1
strTesto = Input(LOF(1), 1)
Close 1
frmAppuntiXP.txtTesto.Text = strTesto
End Sub
Sub ProceduraSalva(file As String)
Open file For Output As #1
Print #1, frmAppuntiXP.txtTesto.Text
Close 1
End Sub
Sub Apri()
With frmAppuntiXP.CommonDialog1
.DialogTitle = "Apri"
.CancelError = False
.Filter = "File di testo|*.txt|Pagina Web|*.htm|Tutti i file|*"
.ShowOpen
If Len(.FileName) = 0 Then
'Eventuale msgbox che avverte che il file non è stato salvato
blnModifiche = True
Else
Call ProceduraApri(.FileName)
End If
End With
End Sub
Sub Salva()
With frmAppuntiXP.CommonDialog1
.DialogTitle = "Salva"
.CancelError = False
.Filter = "File di testo|*.txt|Pagina Web|*.htm|Tutti i file|*"
.ShowSave
If Len(.FileName) = 0 Then
'Eventuale msgbox che avverte che il file non è stato salvato
blnModifiche = True
Exit Sub
Else
Call ProceduraSalva(.FileName)
End If
End With
End Sub
----------------Fine Codice Modulo--------------
Poi nel form principale del programma ho inserito
------------Inizio Code per aprire File-----------
Private Sub mnuApri_Click()
Apri
End Sub
-------------Fine Code per aprire File-----------
------------Inizio Code per salvare File------
Private Sub mnuSalva_Click()
Salva
End Sub
-----------Inizio Code per salvare File---------
In questo modo, ho accorciato enormemente il codice del programma e risolto il bug del comando annulla....GRAZIE MILLE NATAMAS
|
|
natamas (Member)
Pro
Messaggi: 115
Iscritto: 09/04/2006
|
Di niente.
Ciao
|
|