---
title: "Subrutiner och paranteser?!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/128994-subrutiner-och-paranteser"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Troxy"
published: "2005-05-27T22:46:57.000Z"
updated: "2005-05-30T16:50:13.000Z"
replies: 7
views: 321
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/128994-subrutiner-och-paranteser"
---

# Subrutiner och paranteser?!

## #1 — Troxy, 2005-05-27T22:46Z

En sak jag är förvirrad över är hur det egentligen är med paranteser när man anropar subrutiner. Ska dom användas eller inte?!

Exempel:

```
Response.write("hello world")
Response.write "hello world"
```

Vad är skillnaden?

Jag har läst att man inte ska använda paranteser när man anropar subrutiner, utan bara för funktioner. Men jag tror bestämt jag har sett folk använda det ändå utan att få något felmeddelande. När jag använder paranteser för en subrutin så får jag felmeddelande.

Hur är det egentligen?

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

## #2 — Guffa, 2005-05-27T23:56Z

Rätt är:

```
Response.Write "hello world"
```

Ifall du sätter parenteser runt värdet så tolkas det inte som parenteser för anropet, utan just som parenteser runt värdet. Alltså:

```
Response.Write ("hello world")
```

Ifall man försöker anropa en subrutin med flera parametrar med parenteser så får du ett felmeddelande:

```
objConn.Execute(strSQL,,128) '<-- syntaxfel
```

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

## #3 — Troxy, 2005-05-28T09:12Z

Tack så mycket :e 

Okej, så det är när man ger en sub flera argument som paranteser strular till det.  Jag anropar alltid subs utan paranteser, lika bra att forsätta så då :D

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

## #4 — Guffa, 2005-05-28T11:09Z

Parenteser kan strula till det även med en parameter. Att sätta parenteser runt en parameter i ett anrop innebär att värdet av parametern skickas istället för en referens.

Här innebär parentesen alltså att det är värdet av variabeln lngCnt som skickas istället för en referens till variabeln. Alltså kommer variabeln inte att ändras, och fortfarande innehålla ett när den skrivs ut.

```
Sub Increase(ByRef lngCounter)
   lngCounter = lngCounter + 1
End Sub

Dim lngCnt
lngCnt = 1
Increase(lngCnt)
Response.Write lngCnt
```

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

## #5 — PatrikB, 2005-05-30T13:28Z

fast, ska man ha parenteser runt en sub i ett anrop ska man anropa subben så här:

```
Call Subrutinen(vardet)
```

Tar vi Guffas exempel:

```
<%
Sub Increase(ByRef lngCounter)
   lngCounter = lngCounter + 1
End Sub

Dim lngCnt
lngCnt = 1

[b]Call[/b] Increase(lngCnt)

Response.Write lngCnt
%>
```

så får det utskrivna värdet 2, som sig bör ;-)

Klart "renare" och förklarande kod :o)

cya,
/PatrikB

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

## #6 — Erik Juhlin, 2005-05-30T14:01Z

Jag tycker inte koden blir så mycket renare av 100 Call Response.Write("..."). Ser ganska äckligt ut. Gammal Basic kvarleva...
Subbar anropar man utan paranteser...

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

## #7 — Engine^, 2005-05-30T14:37Z

Om en funktion anropas med call kommer ett eventuellt returvärde att ignoreras.

Jag har iofs inte testat skriva

```
x = call theFunction()
```

men jag gissar att det inte fungerar.

Rätt enligt mig ;) är att om man anropar en metod till ett objekt ska det vara paranteser.
Anropar man en funktion eller sub ska det vara paranteser.
Anropar/läser man ett property till ett objekt ska det inte vara några paranteser.

Tack för idag, slut för idag. :)

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

## #8 — Guffa, 2005-05-30T16:50Z

Jag använder konsekvent Call när jag anropar egendefinierade subrutiner och metoder, och utan Call när jag anropar inbyggda subrutiner och metoder.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/128994-subrutiner-och-paranteser
