/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
slet en fil og opret en ny med samme navn
Fra : Thong Tri Nguyen


Dato : 12-06-02 18:26

Hej Grp

Jeg har lavet følgende sub som i enkelte tilfælde giver
'Path/File access error'

Denne sub oprette en ny fil, hvis der findes en i forvejen skal den slettes
først.
FilePath, FileName og FileContent er alle ok !


------------------------------

Public Sub SaveToDisk(ByVal FilePath As String)

Dim i As Long
Dim FileNumber As Integer

If FilePath = "" Or FileName = "" Then Exit Sub
If Mid(FilePath, Len(FilePath)) <> "\" Then FilePath = FilePath & "\"

On Error Resume Next
Kill FilePath & FileName

On Error GoTo 0

FileNumber = FreeFile

Open FilePath & FileName For Binary Access Write Lock Read Write As
#FileNumber
For i = 0 To UBound(FileContent) - 1
Put #FileNumber, , FileContent(i)
Next

Close #FileNumber

End Sub


-------------------------------------
Med venlig hilsen
Thong





 
 
Bjarke Walling Peter~ (12-06-2002)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 12-06-02 19:23

Thong Tri Nguyen skrev:
> Hej Grp
>
> Jeg har lavet følgende sub som i enkelte tilfælde giver
> 'Path/File access error'
>
> Denne sub oprette en ny fil, hvis der findes en i forvejen skal den
slettes
> først.
> FilePath, FileName og FileContent er alle ok !

Du kan bruge følgende subrutine:

Private Sub DeleteFile(ByVal Filename As String)
On Error Resume Next
If Dir(Filename, vbNormal) <> "" Or Dir(Filename, vbHidden) <> "" Then
Kill Filename
End If
Err.Clear
End Sub

Evt. kan man også blot gøre følgende:

On Error Resume Next ' Gør at der ikke kommer fejl
Kill Filename ' Sletter filen - hvis den ikke findes => fejl (afbryder ikke
programmet)
On Error Goto 0 ' Fjerner evt. fejl fra hukommelsen og viser nu
efterfølgende fejl igen

.... men denne metode er dog ikke god skik.
I øvrigt skal man (for at være helt sikker på at filen kan skrives) også
tjekke om der eksisterer en mappe med samme navn som filen (en fil og mappe
i samme mappe kan ikke hedde det samme). Det kan gøres ved:

If Dir(Filename, vbNormal Or vbDirectory) <> "" Or Dir(Filename, vbHidden Or
vbDirectory) <> "" Then
' Enten en fil eller mappe ved navnet 'Filename' eksisterer
End If

Du bør først slette filen og efterfølgende tjekke om der eksisterer en
fil/mappe med det navn - hvis der gør det bliver du næsten nød til blot at
afslutte funktionen med en eller anden fejlkode. Det kan nemlig være rimelig
bøvlet at slette en mappe. Det kunne jo også være at filen ikke var blevet
slettet, hvis nu det kører på et NT-system og den aktuelle bruger ikke havde
adgang til at slette lige den fil.

Håber du kunne bruge det til noget.

Mvh. Bjarke



Harald Staff (13-06-2002)
Kommentar
Fra : Harald Staff


Dato : 13-06-02 18:57

"Thong Tri Nguyen" <thong@kampsax.dtu.dk> skrev i melding
news:ae8077$8gt$1@eising.k-net.dk...
> Hej Grp
>
> Jeg har lavet følgende sub som i enkelte tilfælde giver
> 'Path/File access error'
>
> Denne sub oprette en ny fil, hvis der findes en i forvejen skal den
slettes
> først.
> FilePath, FileName og FileContent er alle ok !

Hei Thong

Undres på om du ikke har overproblematisert før du testet enklest mulige.
Denne oppretter/skriver, eventuelt overskriver om filen finnes:

Sub test()
Open "C:\temp\test.txt" For Output As #1
Print #1, Now
Close #1
End Sub

Du for problemer kun om path/folder ikke finnes eller om du ikke har
skriveprivilegier til filen.

HTH. Beste hilsen Harald





Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste