Newsgroup: it.comp.lang.visual-basic
Titolo: errore apertura file

salve a tutti,
in un mio programma faccio una cosa del genere: con 4 pulsanti apro 4 file diversi in questo modo:
dim fil as integer
command1_click()
fil = Freefile
open "file1" for output as #fil
...
close #fil
end sub
command2_click()
fil = Freefile
open "file2" for output as #fil
...
close #fil
end sub
command3_click()
fil = Freefile
open "file3" for output as #fil
...
close #fil
end sub
command4_click()
fil = Freefile
open "file4" for output as #fil
...
close #fil
end sub
il problema sta nel fatto che quando va in esecuzione, se premo piu' di qualche tasto alla volta mi da un messaggio di errore dicendomi che il file in questione del pulsante premuto è già aperto "Errore di runtime 55 file gia aperto"
altre volte viene invece "Errore di run-time 52 nome o numero di file non valido"
 Praticamente viene scelto lo stesso "fil" per file diversi...che sbaglio?
Muzero
p.s. esiste un disassemblatore per vb?

 p.s. esiste un disassemblatore per vb?
No

p.s. esiste un disassemblatore per vb?
Senza offesa, dubito che sapresti usarlo, per adesso.
-- 
ciao, hal

 p.s. esiste un disassemblatore per vb?
Se cerchi bene forse lo trovi ;-)
Non so se sbaglio, ma io solitamente faccio così:
 command1_click()
 open "file1" for output as #1l
 ...
 close #1
 end sub
-- 
Ciao Gab
ICQ #158859446

  open "file1" for output as #1l
sbagli :-)
--
Salutoni
Sergio

 sbagli :-)
A parte il refuso 1l - 1 è meglio come consigliato da altri o la mia
soluzione?


 soluzione?
non avevo minimamente considerato l'1l...
il problema è: se è già stato aperto un file #1 la tua istruzione va in
errore. se usi freefile no, perchè la funzione ti avrebbe restituito un
"2"...
senza polemica... è una nozione da "lesson one"...
--
Salutoni
Sergio

 numero di file non valido"
Se riesci a premere piu' di un pulsante alla volta, significa che c'e' un
doevents tra open e close dell'evento Click di un qualsiasi Button.
Perchè, a questo punto, non posti cosa c'e' tra open e close ?
-- 
Ciao,
        Fabrizio
<=- 
http://www.negusweb.it
 -=>

> senza polemica... è una nozione da "lesson one"...
Tranquillo che non mi offendo, c'è sempre da imparare.
Ma se ne apro 2 e voglio chiuderne 1 (sempre nella stessa sub) come mi
comporto, specialmente in merito a operazione di append e output che
richiedono l'apertura univoca?
ps per sapere, non per controbattere :-)


 comporto?
dim Fileuno as integer
dim filedue as integer
fileuno = freefile
open ..... as fileuno
filedue = freefile
open ........ as filedue
close fileuno
close filedue
eccetera eccetera. si tratta, semplicemente, di sostituire una variabile ad
un valore costante, nulla di piů.
--
Salutoni
Sergio

[*Aragorn* = 
arago...@yahoo.it
 in
news:bl99f9$9g8e4$
1...@ID-126639.news.uni-berlin.de
] ha scritto:

FreeFile ti restituirà sempre un numero di canale libero.
Quello che il tuo programma consente (se non si specificano i ...) è la
"univocità" della variabile fil e appena l'operatore clicca su un altro
bottone (apre un nuovo file) questa fil viene immediatamente modificata
anche per le istruzioni (cicli) già prima avviati. Altro problema è
l'eventuale disponibilità di un bottone già prima cliccato e il cui ciclo
non è ancora concluso.
Credo che se tu rileggessi tutti i post in risposta (ovviamente non solo i
miei), troverai tutte le obiezioni e strategie.

 Quello che il tuo programma consente
Scusami, mi riferivo al codice pubblicato nel post di apertura.

Perchè, a questo punto, non posti cosa c'e' tra open e close ?
Sospetto che non debba necessariamente esserci un DoEvents in mezzo:
considera che la scrittura su disco da parte del sistema operativo non
e' immediata e magari la FreeFile() ne tiene conto, mentre se si usa
sempre lo stesso numero...
-- 
ciao, hal

 sempre lo stesso numero...
Mi sembra strano pero' che gli restituisca lo stesso numero (freefile),
anche dopo aver aperto il file.
Bisognerebbe sapere cosa fa dopo aver aperto il file, imo.


 (freefile), anche dopo aver aperto il file.
Nessuno ha detto che gli restituisce lo stesso numero (finchè il ciclo è in
corso), ma che _usa_ lo stesso numero. La variabile è globale e ad ogni
assegnazione vengono cambiate le carte in tavola anche ai cicli in corso.