Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Tiedostoon kirjoittaminen

Sivun loppuun

NixDu [28.12.2004 11:57:54]

#

Miten voisi saada kirjoitettua johonki tiedostoon esim. tuosta yatzi pelistä pisteet ylös sillein ettei siinä ole kuin 10 riviä ja se vieläpä järjestäisi ne pisteiden mukaan!
Olen kokeillut ettiä valmiita koodeja pelkän txt filuun kirjoittamiseen mutta mulla ohjelma ei hyväksy open toimintoa!

hunajavohveli [28.12.2004 12:00:46]

#

Näytäpä, minkälaista koodia olet kokeillut. Open-käskyn pitäisi toimia kyllä ihan hyvin.

NixDu [28.12.2004 12:07:18]

#

Dim taulu(2, 2) As Integer
Dim i As Integer, j As Integer

taulu(0, 0) = 1: taulu(1, 0) = 4: taulu(2, 0) = 7
taulu(0, 1) = 2: taulu(1, 1) = 5: taulu(2, 1) = 8
taulu(0, 2) = 3: taulu(1, 2) = 6: taulu(2, 2) = 9

Open "c:\omat\testi.txt" For Output As #1
For i = 0 To UBound(taulu)
    For j = 0 To UBound(taulu, 1)
        Print #1, taulu(i, j),
    Next
    Print #1,
Next
Close #1

Ku laitan tämän koodin tohon VB niin open komento alleviivautuu ja valittaa jostakin "I/O funktiosta" jutusta
http://www.kotikone.fi/petri.hiuspaa/open_kirjoitus.bmp
http://www.kotikone.fi/petri.hiuspaa/open_kirjoitus2.bmp <--- Virheilomitus

BadSource [28.12.2004 12:28:43]

#

Meikäläisellä tuo ainakin menee kivutta läpi. Mikä sen virheilmon tarkka muoto on?

NixDu [28.12.2004 12:34:30]

#

http://www.kotikone.fi/petri.hiuspaa/open_kirjoitus.bmp
http://www.kotikone.fi/petri.hiuspaa/open_kirjoitus2.bmp <--- Virheilomitus

Ja sitten kun lisään sulkeet noitten "" alkuun ja loppuun niin siitä häviää alleviivaus mutta open komennossa pysyy edelleen!

Antti Laaksonen [28.12.2004 12:42:38]

#

Taidat käyttää VB.NETiä? Siinä tiedostoon kirjoitus pitää tehdä tähän tyyliin:

FileOpen(1, "c:\omat\testi.txt", OpenMode.Output)
For i = 0 To UBound(taulu)
    For j = 0 To UBound(taulu, 1)
        Print(1, taulu(i, j))
    Next
    PrintLine(1)
Next
FileClose(1)

BadSource [28.12.2004 12:46:40]

#

DotNettiä... Jaa jaa... No Google auttaa. :)

Kokeile muuttaa tuo avaus- ja kirjoituskomennot muotoon

Microsoft.VisualBasic.FileSystem.FileOpen(1, "C:\Test.txt" ,Microsoft.VisualBasic.OpenMode.Output)
Microsoft.VisualBasic.FileSystem.Write(1, "Test")
Microsoft.VisualBasic.FileSystem.FileClose(1)

Edit: Antti ehtikin edelle siistimmällä koodilla. Nopeat syö hitaat.

NixDu [28.12.2004 12:47:36]

#

no niinpä tietenki! Tyhmästä päästä kärsii koko ruumis! Enpähän tietenkään ajatellut että muitakin versioita on olemassa :Ð. Mutta sitten voisiko saada pientä helppiä tuohon mun kyselyyn nyt ku toi tiedoston kirjoittaminen tuli esille!

BadSource [28.12.2004 12:58:41]

#

Pisteet pitää järjestellä ennemmin ennen kuin niitä kirjoittaa mihinkään tiedostoon, sillä tiedostoon kirjoittamisen jälkeen niitä ei enään pysty järjestelemään.

Vai tarkoitatko että uutta tulosta verrataan tiedostossa oleviin arvoihin joista jokin mahdollisesti korvataan uudella tuloksella kirjoittaen sen sitten tiedostoon vanhan tilalle?

Siinäkin tapauksessa tulokset kannattaa pitää taulukossa, jossa tulosten vertailu on helppoa. Tuo tiedostoon kirjoittaminen (jos sen tekee noin) korvaa aina tiedostossa ennestään olevat arvot.

NixDu [28.12.2004 13:08:08]

#

BadSource kirjoitti:

Pisteet pitää järjestellä ennemmin ennen kuin niitä kirjoittaa mihinkään tiedostoon, sillä tiedostoon kirjoittamisen jälkeen niitä ei enään pysty järjestelemään.

Vai tarkoitatko että uutta tulosta verrataan tiedostossa oleviin arvoihin joista jokin mahdollisesti korvataan uudella tuloksella kirjoittaen sen sitten tiedostoon vanhan tilalle?

Siinäkin tapauksessa tulokset kannattaa pitää taulukossa, jossa tulosten vertailu on helppoa. Tuo tiedostoon kirjoittaminen (jos sen tekee noin) korvaa aina tiedostossa ennestään olevat arvot.

Juuri tuota tarkoitin että se vertaa uutta tulosta vanhoihin tuloksiin ja laittaa sen tuloksin sinne minne kuuluukin, mutta tuloksia pystyy oleen vain 10 riviä!

Ja vielä kysymys miten saan haettua pelaajan nimen tuonne tiedostoon ku en saa sitäkään mitenkään toimimaan!

Sain toimimaan sen että se hakee pelaajan nimen ja tuloksen!

Kerron sen että mulla ei tullut ohjelman mukana ohjeita, koska tuo ohjelma on koulusta ja sitten semmoista että olen yrittänyt googlettaa vaikka kuinka vi***ti, mutta ei oikein ole löytynyt oikeita koodeja ku en osaa miettiä kysymyksiä englanniksi.
Sen takia pakko kysellä täällä ku olen huomannut tämän olevan ihan fiksu ja hyvä paikka

BadSource [28.12.2004 13:27:11]

#

Jos kerran vertailu hoidetaan taulukon arvoista, niin tuloksia on aina vain sen verran mitä taulukossa on soluja. =) Ja voihan tuossa tiedostossa olla vaikka 100 riviä tietoa kunhan tiedät (ohjelmasi tietää) millä rivillä on mitäkin tietoa.

NixDu [29.12.2004 10:04:03]

#

Jatkan tähän samaan kyselyyn sitä että miten saisi tiedoston aukeamaan heti ku aukaisen uuden formin! Sain sen tiedoston aukeamaan nappia painamalla ja sekin oli 4 tunnin homma!

Ei ole koulussa käsitelty tiedostojen aukaisemista suoraan vaan sillein että se tiedosto pitää itse etsiä!

tuomas [29.12.2004 12:18:46]

#

No ei ole nähtävästi myöskään koulussa kuunneltu tarpeeksi!
No jos et nyt oikeasti tiedä niin taikasana on Formin LOAD proseduuri.

Blaze [29.12.2004 12:19:32]

#

Laita se avaaminen napin Click-eventin sijasta formin Load-eventtiin.

Edit: Phöh, ja vielä myöhässä >_<

NixDu [29.12.2004 14:21:41]

#

Ei ole kovin helppo elämä ku ei ole ollut ku vaivaset kuukauden ohjelmointia ja nyt jo pitää tehdä päättötyö, ku se ohjelmointi on loppu ny.

Juice [29.12.2004 20:03:26]

#

M$ muistaakseni suosittelee StreamReaderiä/StreamWriteriä tiedostonkäsittelyyn .NETissä.

NixDu [30.12.2004 15:17:54]

#

Private Sub Menu_points_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Menu_points.Click
    Dim taulu(5, 2) As String
    Dim i As Integer, j As Integer

    'Ensimmäinen taulu Tallentaa pelaajan nimen ja toinen laittaa välin ja kolmas tallentaa tuloksen
    taulu(0, 0) = player1.Text : taulu(0, 1) = " " : taulu(0, 2) = play1_koko_yht.Text
    taulu(1, 0) = player1.Text : taulu(1, 1) = " " : taulu(1, 2) = play1_koko_yht.Text
    taulu(2, 0) = player1.Text : taulu(2, 1) = " " : taulu(2, 2) = play1_koko_yht.Text
    taulu(3, 0) = player1.Text : taulu(3, 1) = " " : taulu(3, 2) = play1_koko_yht.Text
    taulu(4, 0) = player1.Text : taulu(4, 1) = " " : taulu(4, 2) = play1_koko_yht.Text
    taulu(5, 0) = player1.Text : taulu(5, 1) = " " : taulu(5, 2) = play1_koko_yht.Text

    FileOpen(1, "nopat\testi.txt", OpenMode.Output)
    For i = 0 To UBound(taulu)
        For j = 0 To UBound(taulu, 1)
            Print(1, taulu(i, j))
        Next
        PrintLine(1)
    Next
    FileClose(1)

End Sub

Miks tää ei toimi oikein! Vaikka ennen toimi ku oli 3 riviä tekstiä mut nyt ku laitoin 5 niin ei toimi ei!

BadSource [30.12.2004 15:29:12]

#

Ubound(taulu) ja Ubound(taulu, 1) ovat yksi ja sama, sillä Uboundin viittaukset alkavat ykkösestä n:ään saakka. Ja jos arvon jättää pois niin viitataan ensimmäiseen.

Eli korjaa

For i = 0 To UBound(taulu, 1)
    For j = 0 To UBound(taulu, 2)
        Print(1, taulu(i, j))
    Next
    PrintLine(1)
Next

Edit: Eikä tuo "tyhjä" tieto ole turha? Jos se on aina sama, niin ei sitä tarvitse taulukoida, laittaa vain haluamaansa väliin yhden välilyönnin tulostamisen yhteydessä.

NixDu [30.12.2004 15:54:59]

#

Joo toimi toi mut löysin ite toisenlaisen syyn siihen!

Dim taulu(5, 2) As String

Tuossa piti olla ilman tuos BadSourcen viestiä (5,5)

=====================================================================


Ja sitten uus kysymys!

miten saan Labelin näyttämään oikein tekstin txt tiedostosta ku se ei tee sinne niitä tabulaattoreita!
http://www.kotikone.fi/petri.hiuspaa/pisteet.jpg <----- Kuva joka näyttää miten se näkyy

Näin sen pitäisi näkyä!

Pelaajan nimi:          Pisteet:
--------------------------------
  1. Name                 0
--------------------------------
  2. Name                 0
--------------------------------
  3. Name                 0
--------------------------------
  4. Name                 0
--------------------------------
  5. Name                 0
--------------------------------

Näköjään tämäkään ei tee noita tabulaattoreita tuonne

nomic [03.01.2005 03:10:12]

#

Ainaskin vb6:ssa on vbTab. Esim:

text1.multiline = true
Text1.Text = "1" & vbTab & "2"

Juice [03.01.2005 18:37:47]

#

Pieni muutos:

text1.multiline = true
Text1.Text = "1" & Microsoft.VisualBasic.vbTab & "2"

Blaze [04.01.2005 09:16:00]

#

Juice kirjoitti:

Pieni muutos:

text1.multiline = true
Text1.Text = "1" & Microsoft.VisualBasic.vbTab & "2"

Haha, dotnet iskee taas :P

Juice [05.01.2005 19:46:01]

#

Blaze kirjoitti:

Haha, dotnet iskee taas :P

Mutta dotnetissä tuonkin voi estää laittamalla koodin alkuun Imports Microsoft.VisualBasic , jolloin sen jälkeen riittää pelkkä vbTab.

NixDu [06.01.2005 13:55:30]

#

ei toimi ei
Juuri tuota mie tarkoitin ettei toi vbTab komento toimi... Kyl se siellä TXT tiedostotssa näyttää oikein mutta missään muualla ei.

Juice [06.01.2005 18:59:31]

#

Microsoft.VisualBasic.vbTab toimii varmasti.

NixDu [07.01.2005 10:18:47]

#

Tämmönen koodi mulla on siinä

taulu(0, 0) = "Pelaajan nimi:" : taulu(0, 1) = vbTab & " " & vbTab : taulu(0, 2) = "Pisteet:"
        taulu(1, 0) = "--------------------------------"
        taulu(2, 0) = "  1. " & player1.Text : taulu(2, 1) = vbTab + vbTab : taulu(2, 2) = "  " & play1_koko_yht.Text
        taulu(3, 0) = "--------------------------------"
        taulu(4, 0) = "  2. " & player1.Text : taulu(4, 1) = vbTab + vbTab : taulu(4, 2) = "  " & play1_koko_yht.Text
        taulu(5, 0) = "--------------------------------"
        taulu(6, 0) = "  3. " & player1.Text : taulu(6, 1) = vbTab + vbTab : taulu(6, 2) = "  " & play1_koko_yht.Text
        taulu(7, 0) = "--------------------------------"
        taulu(8, 0) = "  4. " & player1.Text : taulu(8, 1) = vbTab + vbTab : taulu(8, 2) = "  " & play1_koko_yht.Text
        taulu(9, 0) = "--------------------------------"
        taulu(10, 0) = "  5. " & player1.Text : taulu(10, 1) = vbTab + vbTab : taulu(10, 2) = "  " & play1_koko_yht.Text
        taulu(11, 0) = "--------------------------------"

Juice [07.01.2005 19:02:30]

#

Jaa, vbTab ei toimikaan Labelissa...
Tee sitten näin:

Const tabi As String = "    "

ja korvaa jokainen vbTab vakiolla tabi. Nämä ovat kyllä välilyöntejä, mutta Chr(9) ei toimi labelissa.

Tai vaihda label yhteen suureen textboxiin.


Sivun alkuun

Vastaus

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

Tietoa sivustosta