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!
Näytäpä, minkälaista koodia olet kokeillut. Open-käskyn pitäisi toimia kyllä ihan hyvin.
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/
http://www.kotikone.fi/petri.hiuspaa/
Meikäläisellä tuo ainakin menee kivutta läpi. Mikä sen virheilmon tarkka muoto on?
http://www.kotikone.fi/petri.hiuspaa/
http://www.kotikone.fi/petri.hiuspaa/
Ja sitten kun lisään sulkeet noitten "" alkuun ja loppuun niin siitä häviää alleviivaus mutta open komennossa pysyy edelleen!
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)
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.
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!
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.
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
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.
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ä!
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.
Laita se avaaminen napin Click-eventin sijasta formin Load-eventtiin.
Edit: Phöh, ja vielä myöhässä >_<
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.
M$ muistaakseni suosittelee StreamReaderiä/StreamWriteriä tiedostonkäsittelyyn .NETissä.
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!
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ä.
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
Ainaskin vb6:ssa on vbTab. Esim:
text1.multiline = true Text1.Text = "1" & vbTab & "2"
Pieni muutos:
text1.multiline = true Text1.Text = "1" & Microsoft.VisualBasic.vbTab & "2"
Juice kirjoitti:
Pieni muutos:
text1.multiline = true Text1.Text = "1" & Microsoft.VisualBasic.vbTab & "2"
Haha, dotnet iskee taas :P
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.
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.
Microsoft.VisualBasic.vbTab
toimii varmasti.
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) = "--------------------------------"
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.