Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET 2008 - stringien käsittelystä

trl888 [24.05.2010 14:50:20]

#

Hei!

Minulla on seuraavanlainen kysymys:

VB.Net sovelluksen pitäisi pystyä avaamaan ja prosessoimaan tekstitiedosto, joka on esim. tällainen:


X 1234 Y 1234
X 5678 Y 5678
X 9012 Y 9012

Joka rivillä on X-koordinaatti ja Y-koordinaatti. Tavoite olisi poimia joka riviltä X:n perässä oleva arvo, ja kirjoittaa sitä vastaava arvo(tai kyseinen luku) COM-porttiin, sama Y:lle. Tiedoston avaamiseen tai sarjaporttiin kirjoittamiseen en tarvitse apua, mutta stringien prosessoinitiin tarvitsisin neuvoja. Eli jos vaikka jokainen rivi on luettu String -tyyppiseen taulukkoon, miten prosessoida se, että siitä saa vaan sen X:n ja Y:n arvot. Eli heti kun X:n arvo on saatu, kirjoitetaan COM-porttiin, samoin Y:n arvolle. Sitten taulukon seuraava indeksi, sama homma, niin kauan kun taulukossa tulee vastaa "", eli ei ole enää tekstiä.

t.
Lauri

groovyb [24.05.2010 15:53:26]

#

Dim SR As System.IO.StreamReader
SR = New System.IO.StreamReader("C:\tiedosto.txt")

'Tiedostosyntaksi:
'X 1234 Y 2342
'X 1234 Y 1242
'X 1235 Y 1231
'etc.

Do While SR.EndOfStream = False

   Dim data As String = SR.ReadLine()
   If data <> "" Then
       Dim Parsed() As String = data.Split({" ", "\r", "\n"},StringSplitOptions.RemoveEmptyEntries)

      'tulisi olla nyt taulukko Parsed(0) = X, Parsed(1) = X:n arvo, Parsed(2) = Y,Parsed(3) = Y:n arvo

       Me.SerialPort1.Open()
       Me.SerialPort1.Write(Parsed(1)) 'Kirjoitetaan X:n arvo
       Me.SerialPort1.Close()
       Me.SerialPort1.Open()
       Me.SerialPort1.Write(Parsed(3)) 'Kirjoitetaan Y:n arvo
       Me.SerialPort1.Close()
  End If
Loop

SR.Close()

En testannut mutta ainakin tuonneppäin :)

*Edit

jos käytät Do While SR.Read, ja luet loopissa SR.ReadLine:llä, ensimmäinen merkki hukkuu. :(

trl888 [24.05.2010 19:26:36]

#

Kiitoksia paljon!!

Lauri

trl888 [24.05.2010 22:43:35]

#

Virheitä tulee noista aaltosulkeista:

Dim Parsed() As  String = data.Split({" ", "\r",
"\n"},StringSplitOptions.RemoveEmptyEntries)

Error 1 Expression expected.

Error 2 Comma, ')', or a valid expression continuation expected.

trl888 [25.05.2010 00:34:13]

#

Muutama topikki takaperin käsiteltiinkin tätä asiaa, olisi pitänyt tarkistaa.

Dim Parsed() As String = data.Split(New String() {" ", "\r", "\n"}, StringSplitOptions.RemoveEmptyEntries)

groovyb [25.05.2010 09:24:46]

#

Hmm, hämmästelen. kyllä meinaan debuggasin tuon koodinpätkän ja taulukkoon tuli ihan niinkuin pitikin. ensimmäinen parametri splitille on char taulukko, ellei sitten string muotoon määritä (niinkuin olit nyt tehnyt).

no pääasia että toimii nyt!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta