Avatar billede kbhadsten Nybegynder
27. august 2006 - 18:27 Der er 7 kommentarer og
1 løsning

Generelt spørgsmål: Lukke objekter efter sig.

hej XP.dk

Jeg er helt grøn i VBs og har derfor et spørgsmål.
Nedenstående eksempel er fra en hjælpefil jeg har.

Function WriteLineToFile
  Const ForReading = 1, ForWriting = 2
  Dim fso, f
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
  f.WriteLine "Hello world!"
  f.WriteLine "VBScript is fun!"
  Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
  WriteLineToFile = f.ReadAll
End Function

Den virker meget godt! Men bør man ikke rydde op efter sig? Altså lukke de objekter man åbner osv! Som sagt er jeg rimelig n00b i VBs

På forhånd tak.
Avatar billede thesurfer Nybegynder
27. august 2006 - 18:35 #1
Jo, det bør man. Koden burde se sådan ud:

Function WriteLineToFile
  Const ForReading = 1, ForWriting = 2
  Dim fso, f
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
  f.WriteLine "Hello world!"
  f.WriteLine "VBScript is fun!"
  Set f = fso.OpenTextFile("c:\testfile.txt", ForReading)
  WriteLineToFile = f.ReadAll
    set f = nothing
    set fso = nothing
End Function
Avatar billede kbhadsten Nybegynder
27. august 2006 - 18:40 #2
Super, tak for det.
Mente heller ikke at det kunne være rigtigt man ikke skulle gøre det!
Skriv et svar, så får du din belønning :o)
Avatar billede thesurfer Nybegynder
27. august 2006 - 18:50 #3
Nah.. du kendte svaret selv.. :-)
Snup du dem bare..
Avatar billede thesurfer Nybegynder
27. august 2006 - 18:51 #4
Doh!
Det skulle ikke have været et svar! :-)

Smid selv et svar, og marker dit eget brugernavn, og klik på Accepter.. så bliver mit svar automatisk afvist..
Avatar billede morten_leth Nybegynder
07. september 2006 - 13:28 #5
Et lille side spørgsmål, det nok rigtig man bør rydde op efter sig, men hvad sker hvis man IKKE gør det, vil jo mene at hvis man eksekvere det med wscript så når scriptet er færdig kommer det helt af sig selv... eller tager jeg fejl...
Jeg kan give dig ret hvis du laver et mega stort script på flere hundrede linjer...
Avatar billede thesurfer Nybegynder
08. september 2006 - 03:01 #6
Når der skabes objekter, "oprettes" objekterne i RAM'en.
Jo flere objekter man har, jo mere RAM bruger man.

Derfor skal man fjerne de objekter man ikke bruger.

Visse sprog har en såkaldt "garbage collector" der fjerner ubenyttede objekter automatisk..
Avatar billede kbhadsten Nybegynder
08. september 2006 - 07:47 #7
En lille side ting!

Er både f, og fso variblerne objecter som bør frigøres når man er færdig.?

  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("c:\testfile.txt", ForWriting, True)
Avatar billede thesurfer Nybegynder
08. september 2006 - 10:05 #8
Hvis man bruger "set variabelnavn = et-eller-andet", skal man bruge "set variabelnavn = nothing".
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