Inget av dem är korrekt. Nu kan jag visserligen inte asp/vb, men det som saknas är kontrollen av att katalogen verkligen skapades. Det normala är att en funktion returnerar false om den inte lyckades och true om allt gick bra.
Så, innan du gör set f = nothing måste du kolla om f är true eller false.
tydal, nej du kan inte det så då bör du heller inte uttala dig.
f kan aldrig vara True eller False eftersom att det är ett objekt. CreateFolder returnerar inte True/False, den returnerar ett objekt för mappen. Och har man kommit så långt så har mappen skapats. Skulle något bli fel på vägen så skulle den istället kört en error.raise och koden hade avbrutits.
Så här tycker jag man ska skriva:
<%
Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")
fso.CreateFolder "c:\asp"
Set fso = Nothing
%>
Alltså inga paranteser när man anropar en funktion utan att ta emot några returnerade värden. Skulle du t.ex. inte ta emot objektet Server.CreateObject returnerar så ska man skriva Server.CreateObject "Scripting.FileSystemObject". Inte för att man skulle vilja det, men ett exempel... :)
tydal, nej du kan inte det så då bör du heller inte uttala dig.
Jag kan programmering och vet hur viktigt det är med felhantering, så jag tyckte det var värt att säga till när det inte var med någon felkontroll i något av exemplen eftersom det är vanligt att folk missar det (koden funkar ju ändå).
Erik Juhlin skrev:
Skulle något bli fel på vägen så skulle den istället kört en error.raise och koden hade avbrutits.
Hur är det då meningen man ska göra för att själv få hantera felen? Att slänga ett runtime error i ansiktet på besökaren är ju väldigt oprofessionellt.
Hur är det då meningen man ska göra för att själv få hantera felen?
On error resume next
' kod som kan producera fel
If err.number <> 0 then
Response.write "Fanken, också! Någe e pajko!"
Err.Clear
End if
On Error goto 0
Exempelvis. VBScript är inte speciellt kul att jobba med när det gäller felhantering.