27. august 2005 - 12:11
Der er
12 kommentarer og 1 løsning
Finde tilfældig linie i .txt fil og tilfældigt valg af et tal
Jeg skal bruge noget kode der automatisk vælger en linie i en tekstfil. Ligeledes skal jeg bruge en kode der automatisk vælger et tal imellem 200 og 3000 (gerne med et interval på 50 hvis det er muligt ??) Nogen der kan hjælpe med det ??
Annonceindlæg fra Asus
27. august 2005 - 13:09
#1
Det lyder som om du har brug for Randomize- og Rnd-funktionerne... Først læser du hele tekstfilen ind i en streng og så splitter du den ved linieskift arrTekst = Split(filindhold, vbCrLf) så kalder du Randomize og derefter tilfaeldig_linie_indeks = CInt(Ubound(arrTekst)) * Rnd() nu har du et linieindeks hvormed du kan hente linien fra dit array tilfaeldig_linie = arrTekst(tilfaeldig_linie_indeks) På samme måde kan du finde et tilfældigt tal mellem 200 og 3000. Du skal have fat i difference mellem 200 og 3000 (dvs. 3000-200=2800) og da det skal være i steps af 50 skal den difference divideres med 50 (altså 2800/50=56). Så kan du bruge Rnd som vist tidligere: tilfaeldigt_tal_i_interval = CInt(56) * Rnd() * 50 + 200 skulle jeg mene...
27. august 2005 - 13:57
#2
Skulle gerne bruge noget kode... er ikke så god til det her ;-) Hvordan henter jeg variablen Sleeper: Sub SleepTimer randomize Sleeper = (Int((1 - 100 + 1) * Rnd + 100)) * 1000 End Sub Ind i denne kode: do WScript.Sleep "SleeperVariablen jeg skal have hjælp til" Msgbox("Den tilfældige linie Jeg skal have hjælp til") loop
27. august 2005 - 13:58
#3
Desuden returnerer dine tilfældige tal med decimaler og er IKKE delelig med 50, så den Sleeper kode jeg har fundet ud af nu virker fint, dropper det med intervaller på 50 ;-)
27. august 2005 - 14:22
#4
Decimalerne kan du fjerne med CInt omkring hele udtrykket: tilfaeldigt_tal_i_interval = CInt(56 * Rnd() * 50 + 200) og tilfaeldig_linie_indeks = CInt(Ubound(arrTekst) * Rnd()) Jeg kunne forestille mig at din kode så nogenlunde således ud: Randomize Function SleepTimer SleepTimer = (Int((1 - 100 + 1) * Rnd + 100)) * 1000 End Function 'Du læser en tekstfil med FSO (FileSystemObject) således: function FindTekst() ' Læs filen set fso = CreateObject("Scripting.FileSystemObject") set txt = fso.OpenTextStream(filsti_og_navn, ForReading) filindhold = txt.ReadAll txt.Close ' Split filen ved linieskift arrTekst = Split(filindhold, vbCrLf) ' Find et indeks Randomize tilfaeldig_linie_indeks = CInt(Ubound(arrTekst) * Rnd()) ' Læs linien FindTekst = arrTekst(tilfaeldig_linie_indeks) end function do WScript.Sleep Sleeper Msgbox(FindTekst) loop
27. august 2005 - 14:23
#5
27. august 2005 - 14:39
#6
Jeg får en Objektet understøtter ikke denne egenskab eller metode 'fso.OpenTextStream'
27. august 2005 - 14:45
#7
Prøv med denne linie i stedet set txt = fso.OpenTextFile(filsti_og_navn, ForReading)
27. august 2005 - 14:47
#8
Nu får jeg en Procedurekaldet eller argumentet er ugyldigt
27. august 2005 - 14:51
#9
Fandt ud af at dette virkede Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("C:\dell\sites.txt")
27. august 2005 - 14:54
#10
ForReading er åbenbart ikke defineret, så værdien der stå i stedet er 1, såledse: set txt = fso.OpenTextStream(filsti_og_navn, 1) Du har husket at lægge sti og filnavn på tekstfilen i variablen filsti_og_navn, ikk'? :)
27. august 2005 - 14:54
#11
Ok, fint nok :)
27. august 2005 - 15:18
#12
Jeg takker.....
27. august 2005 - 15:21
#13
Velbekomme og tak for point :)
Kurser inden for grundlæggende programmering