Toon posts:

[VB.NET] URL uitlezen uit bestand

Pagina: 1
Acties:
  • 411 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een programma gemaakt waar het programma om de 60 seconden een URL ophaalt en weergeeft.

Nu heb ik ook een bestandje met URL's. Maar omdat het aantal URL's elke keer verschillend is denk ik er aan om alle nieuwe lines op te slaan in een array en elke 60 seconden een random url uit de array te halen.

Maar hoe weet ik hoeveel lines er in een file zitten en hoe kan ik elke line apart in een aray opslaan?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

Inlezen, splitsen op Environment.Newline en je hebt een resultarray. De grootte is het aantal URL's

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
je kan de file inlezen met
code:
1
2
3
4
5
6
7
8
9
10
11
Dim Myarray as String()
Dim Url as String
Dim x as Integer = 0

FileOpen(1, bestandsnaam, OpenMode.Input)

Do Until EOF(1)
  Input(1, Url)
  Myarray(x) = Url
  x =+ 1
Loop


Of zoiets, moet je even zoeken.

[ Voor 4% gewijzigd door Remco op 11-10-2004 17:19 ]

The best thing about UDP jokes is that I don't care if you get them or not.


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-05 23:34
Dat ziet er heel erg niet VB.NET uit....

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-05 23:34
gorgi_19 schreef op 11 oktober 2004 @ 17:14:
Inlezen, splitsen op Environment.Newline en je hebt een resultarray. De grootte is het aantal URL's
Mjah, als iedere url in je (text)file op een andere lijn staat, dan kan je het ook doen mbhv een FileStream icm StreamReader en de ReadLine method.

https://fgheysels.github.io/


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
whoami schreef op 11 oktober 2004 @ 17:19:
Dat ziet er heel erg niet VB.NET uit....
Het werkt wel zo ongeveer.
Heb net even de code gestript uit een programma van me.

The best thing about UDP jokes is that I don't care if you get them or not.


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-05 23:34
Remc0 schreef op 11 oktober 2004 @ 17:20:
[...]


Het werkt wel zo ongeveer.
Heb net even de code gestript uit een programma van me.
Hmm, excuses.
Het is toch VB.NET, maar dan very ugly en helemaal niet volgens de .NET regels. (IMHO).

[ Voor 8% gewijzigd door whoami op 11-10-2004 17:22 ]

https://fgheysels.github.io/


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
whoami schreef op 11 oktober 2004 @ 17:21:
[...]


Hmm, excuses.
Het is toch VB.NET, maar dan very ugly. (IMHO).
Kan best zijn :) ben maar een beginner....
Had je de originele code moeten zien.

[ Voor 9% gewijzigd door Remco op 11-10-2004 17:22 ]

The best thing about UDP jokes is that I don't care if you get them or not.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 11 oktober 2004 @ 17:20:
Mjah, als iedere url in je (text)file op een andere lijn staat, dan kan je het ook doen mbhv een FileStream icm StreamReader en de ReadLine method.
Zou kunnen, maar weet je dan ook het aantal regels? Of moet je deze eerst opslaan in een arraylist, om vervolgens dmv een Count te achterhalen hoeveel er in zitten?
whoami schreef op 11 oktober 2004 @ 17:21:
Hmm, excuses.
Het is toch VB.NET, maar dan very ugly en helemaal niet volgens de .NET regels. (IMHO).
idd; System.IO.File.OpenText lijkt me in dit geval 'netter' om te gebruiken :) dat andere ziet er redelijk VB6'achtig uit; waarvan het hooguit zal werken omdat er wat backwards compatibility in zit.

[ Voor 33% gewijzigd door gorgi_19 op 11-10-2004 17:24 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-05 23:34
gorgi_19 schreef op 11 oktober 2004 @ 17:23:
[...]

Zou kunnen, maar weet je dan ook het aantal regels? Of moet je deze eerst opslaan in een arraylist, om vervolgens dmv een Count te achterhalen hoeveel er in zitten?
Nee, dat weet je idd niet.
Echter, je kan alles in een arraylist opslaan (of in een stringlist), en deze dan casten naar een array (mocht je dat willen).

Heb je een voorbeeldje hoe jij het zou doen met die split ?

[ Voor 7% gewijzigd door whoami op 11-10-2004 17:25 ]

https://fgheysels.github.io/


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 21-05 08:21
Maar die kan je toch tellen eerst ? Dat gaat toch best snel.
Weer niet zo netjes....weet ik.

The best thing about UDP jokes is that I don't care if you get them or not.


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-05 23:34
Remc0 schreef op 11 oktober 2004 @ 17:24:
Maar die kan je toch tellen eerst ? Dat gaat toch best snel.
Weer niet zo netjes....weet ik.
Dan moet je je file 2x overlopen....

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 11 oktober 2004 @ 17:23:
Heb je een voorbeeldje hoe jij het zou doen met die split ?
Heel erg uit de losse pols zou je dan uitkomen op:
Visual Basic .NET:
1
2
3
Dim fsFile As StreamReader = File.OpenText("bestandsnaam.txt")
Dim items As String() = fsFile.ReadToEnd.Split(Environment.NewLine)
fsFile.Close()

[ Voor 4% gewijzigd door gorgi_19 op 11-10-2004 17:30 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-05 23:34
gorgi_19 schreef op 11 oktober 2004 @ 17:30:
[...]

Heel erg uit de losse pols zou je dan uitkomen op:
Visual Basic .NET:
1
2
3
Dim fsFile As StreamReader = File.OpenText("bestandsnaam.txt")
Dim items As String() = fsFile.ReadToEnd.Split(Environment.NewLine)
fsFile.Close()
Hmm, is idd een mooie oplossing.
* whoami gebruikt die ReadToEnd vrijwel nooit, en wist ook niet dat die een string returnede. :P

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 11 oktober 2004 @ 17:32:
Hmm, is idd een mooie oplossing.
* whoami gebruikt die ReadToEnd vrijwel nooit, en wist ook niet dat die een string returnede. :P
Enige fout die je niet moet maken is dat je het 'te snel' moet willen doen en
Visual Basic .NET:
1
Dim items As String() = File.OpenText("bestandsnaam.txt").ReadToEnd.Split(Environment.NewLine)

moet willen gebruiken.. :X :X
* gorgi_19 heeft deze fout ooit 1x gemaakt...

[ Voor 6% gewijzigd door gorgi_19 op 11-10-2004 17:34 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Bedankt voor de hulp.
Maar kan het kloppen dat mijn VB.NET geen StreamReader kent?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 11 oktober 2004 @ 17:47:
Bedankt voor de hulp.
Maar kan het kloppen dat mijn VB.NET geen StreamReader kent?
Imports System.IO

[ Voor 4% gewijzigd door gorgi_19 op 11-10-2004 17:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Jah super! Heel erg bedankt.

Hmm bestaat er geen count of zoiets dergelijks bij de streamreader?

Om het aantal lines te tellen?

[ Voor 66% gewijzigd door Verwijderd op 11-10-2004 18:00 ]


  • FireWood
  • Registratie: Augustus 2003
  • Laatst online: 16:42
Verwijderd schreef op 11 oktober 2004 @ 17:56:
Jah super! Heel erg bedankt.

Hmm bestaat er geen count of zoiets dergelijks bij de streamreader?

Om het aantal lines te tellen?
Er is geen speciale funtie om het aantal regels te tellen, dat moet dus in een loopje worden gebouwd.

(theoritsch gekwets:)
Het is namelijk zo dat je een tekstbestand altijd vanaf het begin moet lezen, dus om het aantal regels te tellen moet je het hele bestand doorspitten. Om daar nu een apparte functie van te maken, moet je zo erg veel andere functies toevoegen, terwijl het helemaal niet sneller gaat dan als je het zelf invoert.

Noobs don't use "F1", Pro's do, but they can't find the information they needed


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 11 oktober 2004 @ 17:56:
Hmm bestaat er geen count of zoiets dergelijks bij de streamreader?

Om het aantal lines te tellen?
Neem de Length-property van de array

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Notehoutelade
  • Registratie: Oktober 2001
  • Niet online
Dim Myarray as String()
dim i as interger = 0
dim sr as system.io.streamreader
sr = new system.io.streamreader("C:\myshit.url")
dim strTmp as string = sr.readline
while not strTmp = ""
Myarray(i) = strTmp
i += 1
strTmp = sr.readline
end while
sr.close

aantal array's tellen: dim intArrayItems as integer = Ubound(Myarray)
of natuurlijk gewoon i pakken :P

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-05 23:34
Notehoutlade: dat gaat gewoon crashen, aangezien je geen geheugen reserveert voor die array (je zegt nergens hoe groot die moet zijn).

Je kan het doen op gorgi_19's manier, en dan idd de Length property van de array checken, of je kan alles inlezen dmv StreamReader.ReadLine, iedere URL toevoegen aan een arraylist, en dan de count property van de arraylist gebruiken als je het aantal wilt hebben.
Als je die arraylist wilt omzetten naar een string - array, kan je dat doen dmv de ToArray() method.

https://fgheysels.github.io/


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Even als C# geschreven, kun je vast wel poorten naar vb.net:

C#:
1
2
3
4
5
6
7
8
9
10
11
ArrayList lines = new ArrayList();
StreamReader reader = new StreamReader(@"c:\test.txt");
string line = null;
while((line = reader.ReadLine()) != null)
{
   lines.Add(line);
}

reader.Close();

int numberOfLines = lines.Count;

[ Voor 9% gewijzigd door pjvandesande op 12-10-2004 08:46 . Reden: == null, werkt natuurlijk niet! ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:11

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 12 oktober 2004 @ 08:38:
Notehoutlade: dat gaat gewoon crashen, aangezien je geen geheugen reserveert voor die array (je zegt nergens hoe groot die moet zijn).
Notehoutlade: En ik ben sowieso wel benieuwd waarom je hier een array pakt en geen arraylist. UBound (op de manier die jij gebruikt) is trouwens meer een methodiek van VB6 dan van .Net :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1