---
title: "Random-funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11652-random-funktion"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "LilleSkutt"
published: "2001-09-16T19:12:00.000Z"
updated: "2001-09-17T11:58:00.000Z"
replies: 7
views: 211
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/11652-random-funktion"
---

# Random-funktion

## #1 — LilleSkutt, 2001-09-16T19:12Z

Hallo.
Jag har lite problem med en funktion som ska returnera en slumpvis vald rad ur en textfil. Jag får inga felmeddelanden, men jag får inte heller någon utskrift.

Vad kan vara fel med koden:

```
Function getRandomRow(ByVal FILE)
&nbsp; &nbsp; Dim objFSO, objFile

&nbsp; &nbsp; set objFSO = Server.CreateObject("Scripting.FileSystemObject")
&nbsp; &nbsp; If Not objFSO.FileExists(FILE) Then
&nbsp; &nbsp; &nbsp; &nbsp; Response.Write "Filen hittades inte"
&nbsp; &nbsp; &nbsp; &nbsp; Response.End
&nbsp; &nbsp; End If

&nbsp; &nbsp; set objFile = objFSO.OpenTextFile(FILE)

&nbsp; &nbsp; Dim counter, arr()
&nbsp; &nbsp; ReDim arr(20)
&nbsp; &nbsp; counter = 0

&nbsp; &nbsp; Do Until objFile.AtEndOfStream
&nbsp; &nbsp; &nbsp; &nbsp; arr(counter) = objFile.ReadLine
&nbsp; &nbsp; &nbsp; &nbsp; counter = counter + 1
&nbsp; &nbsp; Loop

&nbsp; &nbsp; objFile.Close
&nbsp; &nbsp; set objFile = Nothing
&nbsp; &nbsp; set objFSO = Nothing

&nbsp; &nbsp; Dim intRow, strRow

&nbsp; &nbsp; Randomize
&nbsp; &nbsp; intRow = Int(Rnd * uBound(arr))
&nbsp; &nbsp; strRow = arr(intRow)

&nbsp; &nbsp; getRandomRow = strRow
End Function
```

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

## #2 — LarsG, 2001-09-16T19:26Z

Hur ser anropet till funktionen getRandomRow ut?

```
response.write getRandomRow("magdur.txt") & "<br>"
```

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

## #3 — icaaq, 2001-09-16T19:47Z

en fråga, om man skriver så här

```
    Do Until objFile.AtEndOfStream
        arr(counter) = objFile.ReadLine
        counter = counter + 1
    Loop
```

kommer inte arr() bli en enda lång rad med lästa rader...eller läggs det ett komma imellan alla lästa rader...automatiskt eller så ??

sen kan man väl göra så här istället
/r. om nu det kommer nåt imellan som skiljer texten åt...annars får man väl lägga dit ett komma....

```
Do Until objFile.AtEndOfStream
        arr(objFile.Line) = objFile.ReadLine
        Loop
```

 :OO

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

## #4 — LarsG, 2001-09-16T20:20Z

raderna hamnar i olika element i arrayen så det är inget problem. Däremot så borde LilleSkutt lägga till en koll på att han inte får mer än 21 rader (eller göra redim i såfall).

Om man ändå skall läsa in hela filen så kan man skriva så här

```
arr = split(objFile.readall,vbCrLf)
```

(om man vill skriva ut en rad så måste man lägga dit en \<br\> )

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

## #5 — LilleSkutt, 2001-09-17T07:51Z

Anropet sker precis så LarsG!

Jag kommer själv att sköta administrationen av de textfiler som kommer att läsas, så de kommer inte överstiga 21 rader... Men ditt förslag ska jag ändå gå över till, ser bättre ut och det är säkrare :)

Men jag gör väl inget fel i själva randomizen? Det verkar ju vara det som spökar...

Jag har ett nytt problem nu:
Jag sätter alltid Option Explicit i mina filer, och när jag sedan ska hämta in all information från en databas till en array, hur ska jag dimma den?!

Man kan ju inte bara sätta

```
Dim rows
rows = ConnectionObjekt.Execute(SQLquery).GetRows()
```

Eller hur?

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

## #6 — LarsG, 2001-09-17T08:36Z

Vet du att du har exakt 21 rader i filen?

Ubound(arr) blir alltid 20 så det är nog bättre att använda denna 

```
intRow = Int(Rnd * (counter-1))
```

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

## #7 — LilleSkutt, 2001-09-17T09:55Z

Ok, det har du rätt i. Men om jag ska använda mig av Split(objFile.ReadAll, vbCrLf) istället måste jag ju unbounda :)

Du har inga förslag på hur jag ska göra med min andra fråga?

Går det att lägga in GetRows() i en icke-ReDimmad array?

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

## #8 — LarsG, 2001-09-17T11:58Z

Går det inte bra med

```
<% option explicit
dim arr,rs,...
'...
'...
arr = rs.getrows()
'...
'...
%>
```

?

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11652-random-funktion
