[VB.Net] Specifieke Line ophalen uit .txt

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
Ik ben nu echt al een tijdje rot aan het zoeken, voor iets wat toch eigenlijk niet te moeilijk zou mogen zijn.
Ik ben op zoek naar een manier, om de 3de line uit een .txt bestand in een textbox te krijgen.
code:
1
2
3
4
5
6
7
8
        Dim fileReader1 As String
        Dim filereader2 As String

        fileReader1 = My.Computer.FileSystem.ReadAllText("C:\1.txt")
        filereader2 = My.Computer.FileSystem.ReadAllText("C:\2.txt")

        RichTextBox1.Text = fileReader1
        RichTextBox2.Text = filereader2

Is wat ik nu gebruik om het volledige text bestand in een textbox te plempen. Maar zou ook van 2.txt alleen de 3de regel in een aparte textbox willen hebben.

Is er een manier om Visual Studio een read line commando te geven?
(Programeer dummie :) )

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11-10 15:03

Rhapsody

In Metal We Trust

Beetje googlen kan geen kwaad hoor :-)

http://www.java2s.com/Tut...eadtextfilelinebyline.htm
of
http://www.daniweb.com/so...ment/vbnet/threads/134617
code:
1
2
3
4
5
6
7
8
sFilename = "C:\Listview.txt"
        If Dir(sFilename.ToString) <> "" Then
            sFileReader = System.IO.File.OpenText(sFilename)
            sInputLine = sFileReader.ReadLine()
            Do Until sInputLine Is Nothing
                         sInputLine = sFileReader.ReadLine()
            Loop
        End If

[ Voor 29% gewijzigd door Rhapsody op 21-11-2011 19:37 ]

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
Rhapsody schreef op maandag 21 november 2011 @ 19:36:
Beetje googlen kan geen kwaad hoor :-)

http://www.java2s.com/Tut...eadtextfilelinebyline.htm
of
http://www.daniweb.com/so...ment/vbnet/threads/134617
code:
1
2
3
4
5
6
7
8
sFilename = "C:\Listview.txt"
        If Dir(sFilename.ToString) <> "" Then
            sFileReader = System.IO.File.OpenText(sFilename)
            sInputLine = sFileReader.ReadLine()
            Do Until sInputLine Is Nothing
                         sInputLine = sFileReader.ReadLine()
            Loop
        End If
Waar moet ik dan de opgevraagde line invullen? SFileReader.ReadLine(3).?

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11-10 15:03

Rhapsody

In Metal We Trust

Je kunt een tellertje mee laten lopen en dan bij de derde regel stoppen.

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
Ik heb niet precies jou oplossing gevonden. (Geen teller mee laten lopen, ik "dim iedere regel as string", en pak degene die ik nodig heb). Maar het werkt. Hoe zou je het dan met een teller doen? Ik gebruik nu:

code:
1
2
3
4
5
6
7
8
        Dim Reader As New System.IO.StreamReader("C:\1.txt")
        Dim str1, str2, str3, str4 As String
        str1 = Reader.ReadLine
        str2 = Reader.ReadLine
        str3 = Reader.ReadLine
        str4 = Reader.ReadLine
        Reader.Close()
        TextBox3.Text = str4

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • P-Storm
  • Registratie: September 2006
  • Laatst online: 10-10 17:03
Een teller kan je googlen, Als je gebruikt van "Teller Visual Basic". Wat zal er gebeuren als een tekstbestand maar 2 regels heeft?

Waarom gebruik je str1 tot str3? Dit zou je weg kunnen laten. Je kunt hieraan denken aan het niet aan een variabele toe te kennen, of alle regels naar dezelfde variabele.

Nofi, maar het lijkt erop dat met een startboek Visual Basic je veel verder zal komen.

Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 11-10 19:53

Ventieldopje

I'm not your pal, mate!

Ik bespeur het ontbreken van een goed boek en de toetsen "google" op iemand zijn toetsenbord. Je was zelf al op de goede weg met de term "readline". Bovendien heeft VS2010 toch code completion (met uitleg?).

Ik denk dus dat je gewoon even naar de bieb moet gaan en een goed boek moet halen over Visual Basic.NET, het liefst een zo recent mogelijk boek ;)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
Klopt, maar het zal je echt verbazen hoe weinig er over visual studio 2010 staat. Er staat vrij veel voor visual studio 2008, en vaak werkt het wel. Maar lang niet altijd, en dan word ik toch echt ongelukkig van msdn. Met de this subject is obsolete. Maar ja. het is dan ook een lange tijd geleden dat ik ook met iets in de visual basic sfeer heb gewerkt. (maar dit ook echt hobby werk, studeer zelf iets in een hele andere richting). Nog echte aanraders qua boeken?

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Biersteker schreef op dinsdag 22 november 2011 @ 00:44:
Ik heb niet precies jou oplossing gevonden. (Geen teller mee laten lopen, ik "dim iedere regel as string", en pak degene die ik nodig heb). Maar het werkt. Hoe zou je het dan met een teller doen? Ik gebruik nu:

code:
1
2
3
4
5
6
7
8
        Dim Reader As New System.IO.StreamReader("C:\1.txt")
        Dim str1, str2, str3, str4 As String
        str1 = Reader.ReadLine
        str2 = Reader.ReadLine
        str3 = Reader.ReadLine
        str4 = Reader.ReadLine
        Reader.Close()
        TextBox3.Text = str4
Ik zou, als het bestand niet te groot is, gewoon
Visual Basic:
1
    TextBox3.Text = System.IO.File.ReadAllLines("C:\1.txt")(3)

doen. Dat neemt niet weg dat je beter een goed boek kan bestuderen, 2008 of 2010 maakt niet zoveel uit, dit is in ieder geval niet veranderd. :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • alwinuzz
  • Registratie: April 2008
  • Laatst online: 10-10 12:54
Ik heb van Teach Yourself Visual Basic 2010 in 24 Hours de VB.net 2003 editie gelezen in het Nederlands, heeft me toen veel geholpen.

Overigens is .net backwards compatible, dus een boek over VB.net 2008 zou ook moeten voldoen. De extra stukjes tussen 2008 en 2010 kan je dan wel op MSDN bijzoeken.

Dit kwam ik ook nog tegen, zelf geen ervaring mee:
- Nog meer boeken: MSDN: Visual Studio Books
- Video's: http://channel9.msdn.com/...nt-for-Absolute-Beginners

Acties:
  • 0 Henk 'm!

  • Dars123
  • Registratie: Juni 2008
  • Laatst online: 23-11-2022
Als je de 3de regel wilt hebben zou ik de suggestie van Pedorus volgen, met een kleine aanpassing:
verander (3) in (2)...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Even een titlefix gedaan:
Specifieke Line ophalen uit .txt in VisualStudioExpress2010 » [VB.Net] Specifieke Line ophalen uit .txt

Nogal een verschil ;)
Biersteker schreef op dinsdag 22 november 2011 @ 01:00:
Klopt, maar het zal je echt verbazen hoe weinig er over visual studio 2010 staat. Er staat vrij veel voor visual studio 2008, en vaak werkt het wel.
Dat komt omdat je niet programmeert in de "taal" Visual Studio maar in de IDE Visual Studio. Je programmeert in de taal Visual Basic .Net a.k.a VB.Net.
Biersteker schreef op dinsdag 22 november 2011 @ 01:00:
Maar lang niet altijd, en dan word ik toch echt ongelukkig van msdn.
:D _O- MSDN is, by far, een van de beste, uitgebreidste en grootste bronnen van documentatie, ever. Daarbij is het web letterlijk vergeven van de VB.Net documentatie.

Ik zou als ik jou was, hobby of niet, even een paar tutorials Visual Basic (.Net!!!!! Pas op voor "classic VB"!!) doornemen; hobby of niet, die ga je nodig hebben om een beetje leuk er mee te kunnen werken.

[ Voor 86% gewijzigd door RobIII op 23-11-2011 11:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
@RobIII, tsja msdn viel mij eerlijk gezegd een beetje tegen als leek. Maar na je opmerking pas op voor classic VB, was het toch in een keer een stuk beter te doen. Ben nu bezig met Teach Yourself Visual Basic in 24 Hours, moet zeggen dat ik door mijn geklooi de helft van de functies in dat boek al had gebruikt. Gelukkig is VB.net niet moeilijk alleen soms lastig :). Ik heb nu een zeer goed werkend proggie kunnen maken, en moet zeggen dat ik eeuwig dank heb voor de input van eigenlijk iedereen die heeft gereageerd. Goed boek, mooie readline oplossing etc. Was erg bang dat mijn topic meteen afgeschoten zou worden (ja google is een combinatie op mijn toetsenbord maar soms kan je zoeken wat je wilt, maar blijf je eroverheen lezen). Deze pointers hebben mij echt zeer goed op weg geholpen. (2 dagen later, werkend programma dat nog nuttig is ook :), maar wel echt quick and dirty)

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je je oplossing hebt is het ook mooi als je je resultaat even post voor mensen die later dit topic ooit nog tegen komen ;) Zie daarvoor ook onze faq betreffende topiceinde.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
Ik zal hem zo even toevoegen. Hoewel ik op dit moment nog niet echt mijn code durf te plempen. Dan staat het binnen 2 minuten in slechtste programeervoorbeelden :). (Ben ik even blij dat me code niet meer 2000+ cmd venstertjes spawned) (misschien stiekem er even bijzeggen dat mijn laatste programmeer avontuur Qbasic was,als jochie van 8 die can you feel the love tonight uit zijn pc speaker knalde :) )

offtopic:
Leuke sig btw.

[ Voor 81% gewijzigd door Biersteker op 23-11-2011 23:30 ]

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Biersteker schreef op woensdag 23 november 2011 @ 23:26:
Hoewel ik op dit moment nog niet echt mijn code durf te plempen. Dan staat het binnen 2 minuten in slechtste programeervoorbeelden :)
Nee hoor; check de topicwarning daar maar ;)
Wat wél mogelijk is, is dat je hier, in dit topic, (constructieve) kritiek krijgt op je oplossing, maar ook daar word je alleen maar wijzer van ;)

[ Voor 16% gewijzigd door RobIII op 23-11-2011 23:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
Vooruit dan maar:
code:
1
2
3
4
5
6
7
8
9
10
11
12
        'Make data
        Shell("C:\1.bat", AppWinStyle.Hide)

        'TEXTBOX 1 
        Dim Reader As New System.IO.StreamReader("C:\1.txt")
        Dim str1, str2, str3, str4 As String
        str1 = Reader.ReadLine
        str2 = Reader.ReadLine
        str3 = Reader.ReadLine
        str4 = Reader.ReadLine
        Reader.Close()
        TextBox1.Text = str4

1.bat code
code:
1
2
3
@echo off
random cmd command >1.txt
exit


Heb hier een .bat gemaakt omdat ik anders of cmd moest killen op processid terwijl. een exit command wel volstaat. Toch stond ik echt verstelt dat me pc het nog redelijk trok met 2000+ processes, :D (hoewel ik nu zovaak 1.txt heb gebruikt dat issues krijg met process is allready in use by .....)
Ik ga hier denk ik wel een readline oplossing van pedorus toepassen. Is natuurlijk veel netter, maar zoals ik zei; Quick and Dirty.
TIP: Run niet een Shell(cmd iets) met een timer op 1 seconde, en als je het doet, zorg dat het closed.

Originally, a hacker was someone who makes furniture with an axe.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt pedorus' oplossing gebruiken of ietsmet een while, een tellertje etc ;)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
counter = 0
line_i_want = 4

reader = new StreamReader("C:\1.txt")
while ((!reader.eof) && (counter < line_i_want))
{
    line = r.readline
    counter++
}

if (counter != line_i_want)
    Output("File doesn't contain enough lines")
else
    Output(line);



Stukje flexibeler, scheelt een shitload aan variabelen (wat als je regel 418 had willen lezen? :P ) etc. etc.

Wat je allemaal met je bat aan 't doen bent (shellen, pipen etc.) ontgaat me en heb ik verder ook geen zin in om uit te puzzelen :P

[ Voor 125% gewijzigd door RobIII op 24-11-2011 00:01 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
iets met waar geen goede apicall voor is :). Maar moet wel echt specifiek line 4 hebben , dus hoef geen enorme output te pakken. :) (Quick and Dirty).

[ Voor 55% gewijzigd door Biersteker op 24-11-2011 00:03 ]

Originally, a hacker was someone who makes furniture with an axe.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Biersteker schreef op donderdag 24 november 2011 @ 00:01:
iets met waar geen goede apicall voor is :)
Wat dan?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
arp :). net als netsh. Dat word gewoon niet vrijgegeven. :(. Misschien maar goed ook.

[ Voor 86% gewijzigd door Biersteker op 24-11-2011 00:04 ]

Originally, a hacker was someone who makes furniture with an axe.


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Dat gebeuren met Shell en zo'n .bat file hoeft natuurlijk ook niet. Zie hier hoe je een StreamReader kan krijgen die leest uit een process in plaats van uit een tijdelijk bestand.

ReadAllLines zou je in zekere zin juist als 'quick-and-dirty' kunnen zien, bijvoorbeeld omdat je teveel regels leest. Daarnaast is een loopje vast nuttiger om te leren.

arp blijft lastig inderdaad. :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Biersteker
  • Registratie: Juni 2009
  • Laatst online: 11-10 18:00
Nice! Dat is inderdaad precies wat ik zocht. Moet zeggen dat mijn eerste versie een shitload aan buttons was om het overzichtelijk te houden. Wat nou precies wat deed. Maar echt arp is een bitch. :P.(maar netsh, damn, alles faalt wat ik daarmee probeer). (had die oplossing ook al gezien, maar is toch te omslachtig / te lastig op het moment.)

[ Voor 8% gewijzigd door Biersteker op 24-11-2011 00:24 ]

Originally, a hacker was someone who makes furniture with an axe.


  • keesdewit
  • Registratie: December 2003
  • Laatst online: 19-06 20:46
C#:
1
2
3
StreamReader sr = new StreamReader("TextFile.txt");
string[] lines = sr.ReadToEnd().Split('\n');
string line = lines[3];


Visual Basic .NET:
1
2
3
Dim sr As New StreamReader("TextFile.txt")
Dim lines As String() = sr.ReadToEnd().Split(vbCrLf)
Dim line As String = lines(3)


Het nadeel is dat je het textbestand volledig moet laden.

  • pedorus
  • Registratie: Januari 2008
  • Niet online
keesdewit schreef op donderdag 24 november 2011 @ 20:49:
Het nadeel is dat je het textbestand volledig moet laden.
Ten opzichte van ReadAllLines() is het nadeel dat je meer code hebt, en vooral dat je een andere definitie van een regel hebt waardoor je extra "\r"'en terugkrijgt. (Je krijgt ook een bonusregel op het einde, maar dat maakt hier niet uit.) Die ene regel extra code vanwege dat for-loopje is dan ook helemaal zo gek nog niet (ok, 1 regel in c#, 2 regels in vb.net). ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • keesdewit
  • Registratie: December 2003
  • Laatst online: 19-06 20:46
Je zou ook een extension method kunnen gebruiken voor je StreamReader:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Module Extensions
    <System.Runtime.CompilerServices.Extension()> _
    Public Function GetLine(ByVal StreamReader As IO.StreamReader, ByVal index As Integer) As String
        Dim i As Integer = 0
        If Not index < 0 Then
            Do Until i.Equals(index) Or StreamReader.EndOfStream
                i += 1
                If Not i.Equals(index) Then StreamReader.ReadLine()
            Loop
        End If
        Return StreamReader.ReadLine
    End Function
End Module


Die kun je als volgt gebruiken:

Visual Basic .NET:
1
2
Dim sr As New IO.StreamReader("TextFile.txt")
Dim str As String = sr.GetLine(1)

Acties:
  • 0 Henk 'm!

Verwijderd

Mijn ervaring is dat je tevens beter
de stream reader en of writer in een Using block kunt plaatsen
dit voorkomt dat de file "In use blijft" mocht je daarna de file willen editen dus zoiets als:


Using Sr as Streamreader = new Streamreader ("Filename.txt")
for I as integer = 0 to Sr.file.length
if i = 3 then
textbox1.txt = Sr.readline.tostring
end if
Sr.readline+vbcrlf
next
end using


Het is een pseudo achtige code hierboven maar misschien heb je er wat aan.
Pagina: 1