Täällä oli joskus opas Qb:n tiedostojen käsittelystä, mutta en sitä nyt löytänyt.
Tarvitsisin seuraavanlaista apua:
Miten tiedostosta voi lukea Qb:n komentoja esim.
---teksti.txt
FOR i=1 TO 100
PRINT i
NEXT
Ja sitten ohjelma lukisi rivit tiedostosta ja suorittaisi ne. Vai onko tämä edes mahdollista?
QBn komentojen suorittaminen on vaikeaa, ei silti AIVAN mahdotonta. Rivien luku onnistuu näin:
OPEN "tiedosto" FOR INPUT AS #1 'Avataan tiedosto DO INPUT #1,rivi$ 'luetaan tiedostosta 'Tässä kohtaa toteutetaan komento LOOP WHILE EOF(1) 'Lopetetaan tiedoston lukeminen, kun tiedosto loppuu
Jos ajat ohjelman QB:n editorissa, voit suorittaa BASIC-kooditiedoston komennolla CHAIN. Käännetyssä ohjelmassa koodin suorittaminen ei onnistune millään ilveellä.
Testasin ja huomasin että chain ei toimi käännetyssä ohjelmassa, kuten Antti sanoi. Kimmon koodi printtasi vain tiedoston ensimmäisen rivin, vaikka tiedostossa oli monta riviä, missä vika?
Tarkoitukseni olisi saada tiedostosta luettua dataan tietoa ja olisi kiva jos saisi tiedostosta luettua looppeja ja if-lauseita. Teen peliä ja uhkaa kilotavuraja tulla vastaan ja valtaosan koodista vie tälläiset if-lauseet:
IF x=50 AND y=20 AND muuttuja=1 THEN PRINT "Löysit avaimen!"
Mistä ratkaisu?
Tuommoisella tekniikalla tuntuu tulevan muutenkin isoi pelei aikasiksi.. Paras olisi, että kaikki on tiedostoissa, joista kopioidaan data taulukoihin josta voidaan yhdessä silmukassa tutkia melkein kaikki..
Jos ongelmana on se, että pelin lähdekoodi on liian suuri käännettäväksi, voit yrittää jakaa ohjelman osiin:
https://www.ohjelmointiputka.net/oppaat/opas.
Mutta tässä tapauksessa pelin toteutustapa kannattaisi miettiä uudestaan. Tallenna kaikki avainten ynnä muiden tavaroiden paikat tiedostoon, lataa ne sieltä taulukkoon ja tarkista kohdat silmukassa, niin tarvitset ainoastaan yhden tuollaisen IF-lauseen.
Kokeilin seuraavaa:
OPEN "teksti.txt" FOR INPUT AS #1 INPUT #1, rivi$ DATA rivi$ CLOSE #1
Kun tulostan datan, ruudulla lukee rivi$. Miten sen saisi toimimaan? Jos joku viitsii, niin pistää kunnon esimerkin tuosta Antin ehdotuksesta.
Se ei taida onnistua, mutta ei dataan mun mielestä tommosta kannata laittaa, vaan vaikka muuttujiin tai taulukoihin
Aihe on jo aika vanha, joten et voi enää vastata siihen.