Avatar billede axkris Nybegynder
15. september 2005 - 18:22 Der er 13 kommentarer og
1 løsning

Gribe fejl ved åbning af tekst-fil?

Hej

Jeg har denne kode, hvor jeg godt vil gribe de evt. fejl, som kunne opstå - f.eks. et biblioteket eller tab-filen ikke eksisterer.

Kan du hjælpe?

Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = "D:\storage\Mail Enable\Config\Postoffices\" & strSite & "\LISTS\" & strName & ".tab"
Set f = fso.OpenTextFile(filespec,2)
Avatar billede softspot Forsker
15. september 2005 - 18:25 #1
Dim fso, f, filespec

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = "D:\storage\Mail Enable\Config\Postoffices\" & strSite & "\LISTS\" & strName & ".tab"
Set f = fso.OpenTextFile(filespec,2)

if err.number <> 0 then
  Response.Write "Der er sket en fejl: " & err.number & "/" & err.description
end if
Avatar billede softspot Forsker
15. september 2005 - 18:26 #2
Du slår standard fejlhåndteringen til igen ved at kalde

On Error Goto 0
Avatar billede axkris Nybegynder
15. september 2005 - 18:40 #3
Ok, men jeg er ikke så glad for onError, kan man ikke bare checke om bibliotektet samt filen eksisterer inden scriptet forsøger at åbne den. Hvordan gør jeg det?
Avatar billede softspot Forsker
15. september 2005 - 18:50 #4
Avatar billede axkris Nybegynder
15. september 2005 - 19:17 #5
Takker - tryk svar :-)

kan du også fortælle mig, hvordan jeg tilføjer en værdi til slutningen af en tekst-fil?

Filen:
værdi1
værdi2
værdi3

Tilføjes:
værdi1

Resultat:
værdi1
værdi2
værdi3
værdi4
Avatar billede softspot Forsker
15. september 2005 - 19:39 #6
Velbekomme :)

Du skal åbne tekdtfilen "for appending", dvs. kaldet

Set f = fso.OpenTextFile(filespec,2)

skal ændres til

Set f = fso.OpenTextFile(filespec,8)
Avatar billede axkris Nybegynder
15. september 2005 - 19:41 #7
ok, og hvordan fylder jeg færdien - f.Write værdi?
Avatar billede axkris Nybegynder
15. september 2005 - 19:41 #8
fylder jeg færdien = fylder jeg Værdien IND
Avatar billede softspot Forsker
15. september 2005 - 19:45 #9
ja,

f.Write "værdien"

skulle gøre det
Avatar billede axkris Nybegynder
15. september 2005 - 19:48 #10
Takker :-) Sidste spg ;-)

Hvordan sletter jeg en enkelt værdi fra filen?

værdi1
værdi2
værdi3
værdi4

Slettes:
værdi2

Resultat:
værdi1
værdi3
værdi4
Avatar billede axkris Nybegynder
15. september 2005 - 19:52 #11
Lille fejl i din kode (hvis andre skulle kopiere det senere):

FileExist() = FileExists()
Avatar billede softspot Forsker
15. september 2005 - 20:11 #12
Ja, der skal være orden i sagerne :)

Umiddelbart ville jeg åben den originale fil for læsning og oprette en ny for skrivning, og så gennemløbe alle linier og skrive dem der skal gemmes over i den nye fil. Til sidst ville jeg så slette den orginale og omdøbe den nye til det den originale fil hed.

Alternativt kunne man indlæse hele filen i et array og lave noget manipulation af array'et og så gemme det igen, men med mindre du har brug for at det performer optimalt (med de givne muligheder), så er den første nok lettest...
Avatar billede axkris Nybegynder
15. september 2005 - 20:15 #13
Takker, kan man ikke bare indlæse hele indholdet af en fil og så bare lave en replace og så smide det tilbage igen?
Avatar billede softspot Forsker
15. september 2005 - 20:22 #14
Jo, hvis du ved hvad det er der skal udskiftes. TextStream-objektet har en metode der hedder ReadAll som læser alt på en gang. Noget i stil med:

set f = fso.OpenTextFile(sti,1)
strAll = f.ReadAll()
f.close

strAll = Replace(strAll, "værdi2" & vbCrLf, "")

set f = fso.CreateTextFile(sti,true)
f.Write strAll
f.close
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