Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: jälkeenpäin lisäys (Qbasic)

Sivun loppuun

Mike_19920 [27.07.2005 17:09:10]

#

kuinka saa ohjelmoitua semmosen jutun että vois lisätä jotakin sen jälkeen kun on tehnyt siitä exe tiedoston

Metabolix [27.07.2005 17:28:29]

#

No tuskin siihen exeen ainakaan saat mitään lisättyä. Noin muuten tietenkin riippuu paljon siitä, mitä haluat lisätä. Yleisesti ottaen tiedostojen käyttö on aika suotavaa. Mitään koodia et saa lisättyä, jos et jaksa ja etenkin osaa tehdä skriptitulkkia. Sen sijaan esimerkiksi pelin tasojen ja grafiikoiden tai tekstiseikkailun lataaminen tiedostosta onnistuu helposti.

Kaikkein suotavinta olisi oivaltaa tällaiset asiat itse, niin voisi sisäistää ne helpommin. Myöskin voisi hieman tarkemmin muotoilla kysymyksensä. Näistä syistä en rupea tässä sen kummempaa selittämään.

Mike_19920 [27.07.2005 18:32:50]

#

eikun meinasin että vois kirjottaa vähän niinku palaute laatikko mutta Qbasicille

Heikki [27.07.2005 18:43:47]

#

Öhöm, nyt ilmaisit itseäsi aika epäselvästi.

Mitä tarkoitat QB-palautelaatikolla? Järjestelmää, johon käyttäjä kirjoittaisi palautteen joka sitten ohjautuisi sinulle? Tekstiä voit lukea input muuttuja$ rivillä (kaip, ei QB:stä enään mitään muista), mutta välittäminen sinulle on hankalampaa. Jos taas haluat vain saada käyttäjän kirjoittaman tekstin näkymään toisaalla ohjelmassa, voit tulostaa sen ihan selkeästi print muuttuja$ (edelleen voi poiketa QB:n syntaksista).

Tarrkennappas vähän mitä olet ajamassa takaa.

Mike_19920 [27.07.2005 18:51:22]

#

no.. minä haluaisin tehdä ohjelman joka ois vähän niinkuin tietokanta jonne voisi lisätä tietoja ohjelmoinnin jälkeen

Heikki [27.07.2005 18:58:26]

#

Siinä tapauksessa kirjoitat tietoja tiedostoon toisessa ketjussa saamiesi ohjeiden mukaisesti.

Esimerkiksi jotenkuten näin...

' Kysytään käyttäjältä nimi ja kirjoitetaan se tiedostoon
INPUT "Kirjoita nimesi: ", nimi$

'Avataan tiedosto data.dat
OPEN "data.dat" FOR OUTPUT AS #1
PRINT #1, nimi$
CLOSE #1



' Tämä koodi sitten hakee tiedot
PRINT "Ladataan tiedot tietokannasta..."
OPEN "data.dat" FOR INPUT AS #1
INPUT #1, henkilo$
CLOSE #1

PRINT "Tietokannassa oli sellaista tietoa että nimesi olisi " + nimi$

Tietysti nimen sijaan voi tallentaa mitä vain.

Hankala auttaa näin yleisluontoisesti, jos jokin yksittäinen asia tuottaa ongelmia niin kerro, tällöin auttaminen on helpompaa.

Mike_19920 [27.07.2005 19:00:17]

#

voikos sitten useamman jutun laittaa kuin yhen

neau33 [27.07.2005 19:04:49]

#

Hei Mike_19920!
Niin monta juttua kun levytila sallii...

Heikki [27.07.2005 19:07:38]

#

Printillä tiedot menevät tiedostoon riveittäin (muistaakseni), tällöin voit kirjoittaa tiedostoon esimerkiksi kolme riviä seuraavasti (enemmänkin voi tietysti olla):
PRINT #1, "moi"
PRINT #1, "tokarivi"
PRINT #1, "kolmasrivi"

Ja lukeminen hoituisi vastaavasti inputeilla
INPUT #1, ekarivi$
INPUT #1, tokarivi$
INPUT #1, kolmasrivi$

Gaxx [27.07.2005 22:24:15]

#

Mutta muista, että INPUTIN lukuerottimena voi toimia myös pilkku.

neau33 [28.07.2005 01:55:35]

#

Hei Mike_19920!

Kun sä kokeilet noita eri muotoja miten kirjoittaa tiedostoihin ja lukea niistä, niin sun on ehkä hyvä tietää, että jos sä avaat olemassa olevan tiedoston OUTPUT jutulla niin sä tyhjennät automaattisesti sen sisällön...
eli sä et voi lisätä pelkästään sillä keinoin mitään valmiiseen tiedostoon jos haluat säilyttää tiedostossa valmiina olevan sisällön. Eli siis OPEN "tiedosto" FOR OUTPUT...vain luo uuden tiedoston kirjoitusta varten.
Kopasaa toi alla oleva koodi ja tutki hieman, mitä tapahtuu niin pääset kärryille ja voit alkaa ahmimaan kaikkee sitä matskua joka löytyy tän putkan sivustoilta...tiedostojen avaamiseen ja lukemiseen on olemassa tän lisäksi vielä muutamia muitakin tapoja ja sen lisäksi lukuisa joukko nixejä ja "vippaskonsteja" niiden käsittelemiseksi...

DECLARE SUB odota ()

 ON ERROR GOTO ErrorHandler
    KILL "testi1.txt":KILL "testi2.txt":KILL "testi3.txt":KILL "testi4.txt"

 CLS

 'avaat nyt aivan uuden tiedoston APPEND:lla kirjoitusta varten:
 OPEN "testi1.txt" FOR APPEND AS #1
  'ja kirjoitat sinne sanan "moi" /WRITE KÄSKYLLÄ:
  WRITE #1, "moi"
   'ja sit sä suljet sen tiedoston:
   CLOSE #1

 'sä tahdot lisätä myöhemmin siihen tiedostoon yhden rivin lisää:
 OPEN "testi1.txt" FOR APPEND AS #1
  'ja kirjoitat sinne yhden rivin lisää:
  WRITE #1, "olen"
  'ja taas suljet tiedoston:
   CLOSE #1

 'sä tahdot lisätä tiedostoon vielä kolmannen rivin:
 OPEN "testi1.txt" FOR APPEND AS #1
 'ja kirjoitat sinne yhden rivin lisää:
  WRITE #1, "Mike_19920"
  'ja suljet tiedoston:
   CLOSE #1

 'sit teet saman jutun eri tiedostonimellä ja kirjoitat PRINT käskyllä

 OPEN "testi2.txt" FOR APPEND AS #1
  PRINT #1, "moi"
   CLOSE #1

 OPEN "testi2.txt" FOR APPEND AS #1
  PRINT #1, "olen"
   CLOSE #1

 OPEN "testi2.txt" FOR APPEND AS #1
  PRINT #1, "Mike_19920"
   CLOSE #1

 'sit teet kolmannen testin OUTPUT/WRITE
 OPEN "testi3.txt" FOR OUTPUT AS #1
  WRITE #1, "moi"
   CLOSE #1

 OPEN "testi3.txt" FOR OUTPUT AS #1
  WRITE #1, "olen"
   CLOSE #1

 OPEN "testi3.txt" FOR OUTPUT AS #1
  WRITE #1, "Mike_19920"
   CLOSE #1

 'sit teet vielä neljännen testin OUTPUT/PRINT
 OPEN "testi4.txt" FOR OUTPUT AS #1
  PRINT #1, "moi"
   CLOSE #1

 OPEN "testi4.txt" FOR OUTPUT AS #1
  PRINT #1, "olen"
   CLOSE #1

 OPEN "testi4.txt" FOR OUTPUT AS #1
  PRINT #1, "Mike_19920"
   CLOSE #1

 'nyt sä avaat tiedostot yks kerallaan ja tukit mitä tapahtui
 OPEN "testi1.txt" FOR INPUT AS #1  '(APPEND/WRITE)
  a$ = INPUT$(LOF(1), 1)
   CLOSE #1: PRINT a$

 odota
 'Sama juttu, mutta luet sen hieman eri tavalla
 OPEN "testi1.txt" FOR INPUT AS #1  '(APPEND/WRITE)
  INPUT #1, a$
   CLOSE #1: PRINT a$: odota

 OPEN "testi2.txt" FOR INPUT AS #1 '(APPEND/PRINT)
  a$ = INPUT$(LOF(1), 1)
   CLOSE #1: PRINT a$: odota

 OPEN "testi2.txt" FOR INPUT AS #1 '(APPEND/PRINT)
  INPUT #1, a$
   CLOSE #1: PRINT a$: odota

 OPEN "testi3.txt" FOR INPUT AS #1 '(OUTPUT/WRITE)
  a$ = INPUT$(LOF(1), 1)
   CLOSE #1: PRINT a$: odota

 OPEN "testi3.txt" FOR INPUT AS #1 '(OUTPUT/WRITE)
  INPUT #1, a$
   CLOSE #1: PRINT a$

 odota
 OPEN "testi4.txt" FOR INPUT AS #1 '(OUTPUT/PRINT)
  a$ = INPUT$(LOF(1), 1)
   CLOSE #1: PRINT a$: odota

 OPEN "testi4.txt" FOR INPUT AS #1 '(OUTPUT/PRINT)
  INPUT #1, a$
   CLOSE #1: PRINT a$: odota
 END

ErrorHandler:
 RESUME NEXT

SUB odota
 PRINT:PRINT "paina jotain näppäintä":PRINT
  DO WHILE INKEY$ = "": LOOP: CLS
END SUB

Sivun alkuun

Vastaus

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

Tietoa sivustosta