---
title: "Vad är rätt i detta fall? (CreateFolder)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/101260-vad-är-rätt-i-detta-fall-createfolder"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "per-v"
published: "2004-04-11T11:01:32.000Z"
updated: "2004-04-11T20:07:57.000Z"
replies: 7
views: 586
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/101260-vad-är-rätt-i-detta-fall-createfolder"
---

# Vad är rätt i detta fall? (CreateFolder)

## #1 — per-v, 2004-04-11T11:01Z

Hej!

En snabb fråga angående CreateFolder, vilken av nedanstående medtoder är "rätt"?

På den [här](http://www.w3schools.com/asp/met_createfolder.asp) sidan så har dom gjort följande:

```
<%
dim fs,f
set fs=Server.CreateObject("Scripting.FileSystemObject")
	set f=fs.CreateFolder("c:\asp")
	set f=nothing
set fs=nothing
%>
```

Provade att strunta i "set f=" och det fungerar ju lika bra...

```
<%
dim fs

set fs=Server.CreateObject("Scripting.FileSystemObject")
	fs.CreateFolder("c:\asp")
set fs=nothing
%>
```

Så vilket är det korrekta sättet, och vilket är det bästa sättet?

Kanske en dum fråga, men men...

Permalänk: https://www.webforum.nu/p/101260

## #2 — tydal, 2004-04-11T11:25Z

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.

Permalänk: https://www.webforum.nu/p/1319329

## #3 — niko, 2004-04-11T11:25Z

Båda är "rätt". Däremot är det första "bättre" (i det här fallet) av två anledningar.

1\. Det är fånigt att fånga ett returvärde man inte tänker använda.
2\. Du tjänar (temporärt) 16 bytes på att inte allokera "f".

Permalänk: https://www.webforum.nu/p/1319330

## #4 — Erik Juhlin, 2004-04-11T12:07Z

niko, du menade det andra väl?

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... :)

Permalänk: https://www.webforum.nu/p/1319342

## #5 — tydal, 2004-04-11T12:23Z

> **Erik Juhlin skrev:**
>
> 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.

Permalänk: https://www.webforum.nu/p/1319348

## #6 — @nders, 2004-04-11T13:08Z

> **tydal skrev:**
>
> 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.

Permalänk: https://www.webforum.nu/p/1319365

## #7 — per-v, 2004-04-11T16:19Z

Tack för infon allihopa!

Jag kör på Eriks svar eftersom det var så jag gjort...

Permalänk: https://www.webforum.nu/p/1319500

## #8 — niko, 2004-04-11T20:07Z

> **Erik Juhlin skrev:**
>
> niko, du menade det andra väl?

Jo, jag har en känsla av det. För övrigt kan man ju (i det här fallet) lika gärna skriva:

```
Server.CreateObject("Scripting.FileSystemObject").CreateFolder "c:\asp"
```

Ännu färre tecken för tolken att parsa.

Permalänk: https://www.webforum.nu/p/1319619

---

Tråden på webben: https://www.webforum.nu/amne/asp/101260-vad-är-rätt-i-detta-fall-createfolder
