Hej. En enkel variant är följande: Hej Varför ha en extern funktion som bara kollar det ?? Är det inte bättre att implementera den felhanteringen direkt i subrutinen som öppnar filen ?? Det resulterar i en mindre läsning i filsystemet.. Hej Hmm jo men problemet finns ju kvar där .. du öppnar och stänger en fil i onödan.. Igen Ja i onödan .. Om nu filen finns och inte är öppen kommer du ha öppnat den två gånger. I en applikation med hundratals kanske tusentals samtidiga användare är det en sådan typisk flaskhals. Om du istället alltid har felhanteringen i den aktuella operationen, alltså öppnandet av filen, har du halverat diskaccess tiden direkt jämmfört med den metod du föreslår HejKontrollera om fil är öppen
Jag vill kontrollera om en textfil är öppnad av något program, är den öppnad så vill jag att min app skall vänta tills filen är stängd och därefter öppna filen för antingen läsning eller skrivning.
Någon som har ett förslag om hur jag skall göra.
Helt vilsen.
Fortsatt Glad påsk på er allaSv: Kontrollera om fil är öppen
1. Ha en timer som du använder med ett intervall som du tycker passa
2. Skriv exempelvis en kod som denna..
Sub Timer1_Timer()
On Local Error Goto ErrHandler
Open "filnamn.txt" For Input As #1
Close
MsgBox "Filen kunde öppnas nu!"
Exit Sub
ErrHandler:
' Vi fick fel, filen går inte att öppna -
' får vänta tills timern ger oss ett nytt försök
End SubSv: Kontrollera om fil är öppen
Så här brukar jag göra
Du skickar hela sökvägen och namn på filen
till Functionen och tar reda på svaret
Private Function FileExists(FilId As String) As Long
'FilId innehåller hela sökvägen till sökt fil
'Kontroll om filen redan finns
Dim FileNum As Long
FileNum = FreeFile
On Error GoTo ErrorMsg
Open FilId For Input As #FileNum
ErrorMsg:
Select Case Err
Case Is = 0 'Filen finns redan
FileExists = 0
Case Is = 70 'Filen finns redan och är öppnad
FileExists = 70 'Det är detta som du är intreserad av
Case Is = 53 'Filen finns ej på den sökta vägen
FileExists = 53
End Select
Fortsätt:
Close #FileNum
Exit Function
Resume Fortsätt
End Function
mvh
SvenSv: Kontrollera om fil är öppen
Sv: Kontrollera om fil är öppen
Det är en smaksak, i det här fallet är det ju
helt ok att bara implemntera Case = 70 i pelles exempel.
Den här funktionen har jag som standard i andra
program som behöver öppna filer.
behöver inte "uppfinna hjulet varje gång"
Ha det
SvenSv: Kontrollera om fil är öppen
Sv: Kontrollera om fil är öppen
>du öppnar och stänger en fil i onödan..
Vadå i onödan.? Jag vill ju öppna filen,men av
omständigheter som jag inte har kontroll över
kan den redan vara öppnad eller så finns den
inte i den mapp jag söker i.
Nog om detta
Sven Sv: Kontrollera om fil är öppen
Sv: Kontrollera om fil är öppen
Okidoki Nu förstår jag hur du menar,det blir
ju faktiskt två gånger om svaret är 0 (noll)
Mvh
Sven