Problème fichier déjà ouvert, réponses rigolotes...
Le
surfeur75
Bonjour,
J'ai un problème de fichier déjà ouvert, et je n'ai eu que des réponses
étranges, genre "utilise FreeFile", évidemment que je l'utilise!
Une autre réponse fut plus forte "En utilisant correctement FreeFile, on ne
peut pas avoir (fichier déjà ouvert)", ça c'est fort comme réponse, intense
et vibrant
Il suffit de prendre un petit exemple pour démontrer labsurdité de ces
réponses (erreur à adresse "1:"):
Sub Form_Load()
Dim pf1 As Long: Dim pf2 As Long
ChDrive App.Path: ChDir App.Path
pf1 = FreeFile
Open "test1.txt" For Append As pf1
pf2 = FreeFile
1: Open "test1.txt" For Binary As pf2 ' FICHIER DEJA OUVERT ICI !!!
Reset
End Sub
Bon, à part ça, j'ai toujours mon problème, moi, à savoir que j'ai des
erreurs "fichier déjà ouvert", mais que je n'arrive pas à localiser le
fichier concerné ni le pointeur qui le gère dans trois mètres de code, plein
de fichiers et procédures, alors la question est: Y a -t-il une méthode pour
savoir quels sont les pointeurs qui gèrent encore des fichier au moment de
l'erreur, a fin de localisation?
Merci.
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!
J'ai un problème de fichier déjà ouvert, et je n'ai eu que des réponses
étranges, genre "utilise FreeFile", évidemment que je l'utilise!
Une autre réponse fut plus forte "En utilisant correctement FreeFile, on ne
peut pas avoir (fichier déjà ouvert)", ça c'est fort comme réponse, intense
et vibrant
Il suffit de prendre un petit exemple pour démontrer labsurdité de ces
réponses (erreur à adresse "1:"):
Sub Form_Load()
Dim pf1 As Long: Dim pf2 As Long
ChDrive App.Path: ChDir App.Path
pf1 = FreeFile
Open "test1.txt" For Append As pf1
pf2 = FreeFile
1: Open "test1.txt" For Binary As pf2 ' FICHIER DEJA OUVERT ICI !!!
Reset
End Sub
Bon, à part ça, j'ai toujours mon problème, moi, à savoir que j'ai des
erreurs "fichier déjà ouvert", mais que je n'arrive pas à localiser le
fichier concerné ni le pointeur qui le gère dans trois mètres de code, plein
de fichiers et procédures, alors la question est: Y a -t-il une méthode pour
savoir quels sont les pointeurs qui gèrent encore des fichier au moment de
l'erreur, a fin de localisation?
Merci.
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!

Poser une question


"surfeur75" news:
réponses
ne
intense
plein
pour
"surfeur75" news:
Fichier déjà ouvert ne signifie pas uniquement "Pointeur déjà utilisé" (si
on peut parler de pointeur en VB?) mais aussi "fichier avec un lock
quelconque (=fichier en cours d'utilisation par ce programme ou un autre)"!
Je pense que la réponse "En utilisant correctement FreeFile, on ne peut pas
avoir (fichier déjà ouvert)" ne concernait que le cas "pointeur déjà
utilisé" et non l'autre...
Uniquement pour le débuggage (le code n'est pas des plus solides), pour
tester si un fichier est déjà ouvert, tu peux essayer quelquechose comme
ceci:
#Const DebugMode = 1
Private Sub Form_Load()
Dim FFN As Integer
FFN = FreeFile
Open "e:test.txt" For Binary As FFN
Debug.Print IsFileNumber(FFN)
Debug.Print IsFileNumber(1)
Debug.Print IsFileNumber(2)
Close FFN
End Sub
#If DebugMode Then
Private Function IsFileNumber(FileNumber As Integer) As Boolean
On Error GoTo ErrHandler
Open App.Path & "Opentest.tmp" For Binary As FileNumber
Close FileNumber
Kill App.Path & "Opentest.tmp"
ErrHandler:
Select Case Err.Number
Case 0
IsFileNumber = False
Case 55
IsFileNumber = True
Case Else
Err.Raise Err.Number, _
Err.Source, _
Err.Description, _
Err.HelpFile, _
Err.HelpContext
End Select
End Function
#End If
Tu peux aussi plus simplement connaitre le dernier fichier ouvert en
utilisant FreeFile -1
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Effectivement, ma réponse ne portait que sur le cas d'une tentative
d'utilisation du même numéro de canal plusieurs fois...
Je n'avais pas compris que ton code ouvrais plusieurs fois le même
fichier...
Mea culpa c'est ma très grande faute.... ;-)
--
Enjoy !
d'ouverture ?
En mode append, tu envisages une écriture, et le system
bloque peut-être les autres accés, alors qu'en mode
lecture, pas de soucis !
Et en ouvrant en binary avant l'append ??
Mais je suis OK avec toi, pour dire que les réponses sont
souvent n'importe quoi, car ne lisant pas attentivement
les explications du problème !
De plus, pour suivre les réponses, il faut remonter au
moment où tu as laissé ta question, alors que bien des
forums les classes par ordre de dernière intervention !
eu que des réponses
l'utilise!
correctement FreeFile, on ne
comme réponse, intense
labsurdité de ces
OUVERT ICI !!!
savoir que j'ai des
localiser le
mètres de code, plein
il une méthode pour
fichier au moment de
alea jacta est!
"surfeur75" news:
réponses
ne
intense
Sans en avoir fait l'essai, je dirai qu'en rendant la main au systeme pour
qu'il Ferme effectivement la ressource, devrait fonctionner.
Par le biai d'un DoEvents par exemple.
De nombreux programmeurs oublient souvent que la programmation VB est
Evenementielle et non plus Sequentielle comme sous DOS, et que cela a des
concequences sur la maniere d'arranger les lignes de code qui font appel à
des ressources systemes (comme les fichiers par ex) !!!
Best Regards
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.560 / Virus Database: 352 - Release Date: 08/01/2004