Avatar billede fico Nybegynder
24. august 2000 - 15:46 Der er 5 kommentarer og
3 løsninger

File Exists

Finder der en funktion i VB der hedder File Exists eller noget i den retning.
Altså den finder ud af om filen findes.
Avatar billede brian Nybegynder
24. august 2000 - 16:05 #1
Public Function FileExists(strPath As String) As Integer

    FileExists = Not (Dir(strPath) = \"\")

End Function
Avatar billede winkill Nybegynder
24. august 2000 - 16:06 #2
Jeg kender kun denne:

I Project->References markerer du MicroSoft Scripting Runtime

I koden skriver du:
Sub Slet(Filnavn As String)
Dim fso As New FileSystemObject
fso.DeleteFile(Filnavn, True)
Set fso = Nothing
End Sub
Avatar billede winkill Nybegynder
24. august 2000 - 16:08 #3
Argh, havde lige noget andet i tankerne... Der er brians metode og der er:

I Project->References markerer du MicroSoft Scripting Runtime

I koden skriver du:
Function FileExists(Filnavn As String) As Boolean
  Dim fso As New FileSystemObject
  FileExists = fso.FileExists(Filnavn, True)
  Set fso = Nothing
End Function
Avatar billede privaten Nybegynder
24. august 2000 - 17:52 #4
eller

Public Function FileExists(filePath As String) As Boolean
    FileExists = Dir(filePath) <> \"\"
End Function
Avatar billede tomasc Nybegynder
24. august 2000 - 22:48 #5
Lige en bemærkning til dem, som foreslår brugen af Dir(), til at undersøge om en fil eksisterer:

Selvom Dir(X) returnerer en ikke-tom streng, er det ikke sikkert, at file X eksiterer. Her er et par ekempler:

.
*
*.*
C:\\
C:\\Windows\\      (eller lignende - bemærk backslash til sidst)

Som alle returnerer \"noget\", selvom ingen af ovenstående er gyldige filnavne (nogle af dem er dog gyldige biblioteksnavne).

Dermed ikke sagt, at muligheden for at benytte ? og * wildcards er at foragte. Naturligvis ikke.

...og for at det hele ikke skal gå op i kritik af andres gode forslag, vil jeg ydmygst komme med et forslag, som ikke benytter \"eksterne\" objekter:

Function FilEksisterer(ByVal FilNavn As String) As Boolean
    Dim f As Integer
    f = FreeFile
    On Error GoTo FindesIkke
    Open FilNavn For Input As #f
    FilEksisterer = True
    Close #f
    Exit Function
FindesIkke:
    FilEksisterer = False
End Function
Avatar billede tomasc Nybegynder
24. august 2000 - 23:02 #6
...og i samme øjeblik at jeg sendte min besked, kom jeg i tanke om at Open er alt for kluntet at bruge, når f.eks. GetAttr kan gøre det samme (nemlig checke eksistensen af en fil). Desuden vil Open kunne fejle, hvis en fil er låst for LÆSNING.

Nyt forslag:

Function FilEksistens(ByVal FilNavn As String) As Boolean
    On Error GoTo FindesIkke
    GetAttr FilNavn
    FilEksistens = True
    Exit Function
FindesIkke:
    FilEksistens = False
End Function
Avatar billede winkill Nybegynder
25. august 2000 - 01:09 #7
Ok, hvad med at lade Windows gøre arbejdet...

Public Declare Function OpenFile Lib \"kernel32\" Alias \"OpenFile\" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long

Public Const OF_EXIST = &H4000

Public Type OFSTRUCT
        cBytes As Byte
        fFixedDisk As Byte
        nErrCode As Integer
        Reserved1 As Integer
        Reserved2 As Integer
        szPathName(OFS_MAXPATHNAME) As Byte
End Type

Function FileExists(Path As String) As Boolean
Dim ofs As OFSTRUCT
Dim ret As Long
If OpenFile(Path, ofs, OF_EXIST) Then FileExists = True
End Function
Avatar billede winkill Nybegynder
25. august 2000 - 01:09 #8
Ok, der er nok én ting vi kan blive enige om, der er en zillion måder at checke om en fil eksisterer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester