Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: erikoinen juttu *QB*

Sivun loppuun

juhaz [13.03.2004 16:30:32]

#

Onko quickbasicilla mahdollista tehdä jollakin tapaa sillainen jännä juttu fake os ohjelmaan, että userilla voi olla vaikka kolme komentokehoitetta auki ja hän voi surffata niiden välillä?

Yritän esimerkillä esittää sen
-------F1/Screen 1--------
W-UX Version 1.0
$
-------loppui-------------

käyttäjä painaa F2:sta näppäimistössä ja se vaihtaa toiseen screeniin, jossa hän antaa komennon ls ja se näyttää hakemistot ja tiedostot, eli se näyttäisi tältä sitten

------F2/Screen 2---------
W-UX Version 1.0
$ls
\bin
\etc
\tmp
------loppui---------------

ja käyttäjä voi painaa sitten vaikka F1:stä niin hän palaa tuohon ekaan kuvaan, jossa ei oltu kirjoitettu vielä mitään komentoja, mutta jos hän klikkaa F2:sta uudelleen niin hän palaa tuohon tokaan, jossa oli annettu jo komento ls.

Onkohan tälläinen edes mahdollista? Toivottavasti ymmärsitte mitä meinasin...

rndprogy [13.03.2004 16:47:01]

#

Tallenna edellisessä ruudussa olevat tekstit väliaikaiseen vaikka tekstitiedostoon aina kun painaa f2 ja kun otetaan ruutu uudelleen esille lataat ne tekstit sieltä. Tajusitko kerralla vai tarviiko koodia. Niinja toivottavasti minä ymmärrsin.

juhaz [13.03.2004 16:50:43]

#

Tuossa tilanteessa tulee vain mieleen toinen kysymys eli kuinka tallentaa ne tekstit väliaikaisesti tekstitiedostoon?

rndprogy [13.03.2004 17:18:07]

#

niin että aina kun painaa entter se tallentaa

open "teksti.txt" for append as #1
print #1, tekstirivi
close

ja sitten avaa

open "teksti.txt" for input as #1
input #1, a$

do
print #1, a$
loop until eof(1)
close

juhaz [13.03.2004 17:32:19]

#

Ei tuo kyllä ihan toimi, kun siinä pitäisi kaikki se teksti mitä näytölle tulee saada silloin tallennettua, ei vain sitä mitä käyttäjä kirjoittaa...

rndprogy [13.03.2004 17:38:38]

#

No en kyllä osaa auttaa. mutta jos vaikka näin

INPUT N$
IF N$ <> "" THEN 'se tallennus juttu vaikka subi tai joku

eli aina kun painaa entteri se tallentaa.

hunajavohveli [13.03.2004 17:40:41]

#

No tee sitten ohjelma joka lukee näytöllä olevan tekstin ja tallentaa sen tiedostoon. Merkkien ASCII-koodit luetaan näytöltä SCREEN-käskyllä, vähän niin kuin POINT, mutta merkeille. Tai jos SCREEN on liian hidas, niin käytä PEEK:iä. En kyllä tiedä onko se nopeampi.

rndprogy [13.03.2004 17:44:38]

#

Hetkonen siis miten voit käyttää Näppäimiä kun käyttää functiota INPUT N$ vai käytätkö tekstin naputeluun jotain muuta systeemiä?

juhaz [13.03.2004 19:23:42]

#

Pitäisi varmaan kehittää jokin future libraryn savescreen... tjs... tyylinen homma, kun tuo future libraryn komentokaan ei toimi ellei käytä sitten jotain set800x600 32 siellä alussa, jolloin input ei toimi, tai toimii, mutta ei näy.

Eli koodi on noin suurinpiirtein tällä hetkellä tälläinen:

print "W-UX Version 1.0"
s:
input "$", cline$
shell rootdir$ + "\bin\" + cline$
goto s

jolloin tuo sama koodi toistuisi muissakin (voisiko niitä kutsua joksikin virtuaali konsoleiksi / komentokehoitteiksi?)

Antti Laaksonen [14.03.2004 00:05:31]

#

Tekstinäyttöjä voi olla muistissa samaan aikaan peräti kahdeksan kappaletta. Näyttösivun valinta tapahtuu SCREEN-komennon yhteydessä ja kopiointi PCOPY-komennolla. Tässä on pieni esimerkki:

'tulostus sivulle 0, näkyvissä sivu 0
SCREEN 0, , 0, 0
CLS
COLOR 1: PRINT "Eka rivi"
COLOR 2: PRINT "Toka rivi"
COLOR 3: PRINT "Kolmas rivi"
SLEEP

'tulostus sivulle 1, näkyvissä sivu 1
SCREEN 0, , 1, 1
CLS
PRINT "Toinen juttu"
SLEEP

'tulostus sivulle 0, näkyvissä sivu 1
SCREEN 0, , 0, 1
COLOR 4: PRINT "Neljäs rivi"
SLEEP

'tulostus sivulle 0, näkyvissä sivu 0
SCREEN 0, , 0, 0
SLEEP

'kopioidaan sivu 1 sivulle 0
PCOPY 1, 0

juhaz [14.03.2004 07:25:24]

#

Virittelin yön aikana tälläisen virityksen ja on toiminut... mä luulin, että mun olisi pitänyt tehdä ihan ihmeellisiä virityksiä, käyttää jotain apukirjastoja... jne... apuna, mutta vastaus olikin helpompi kuin uskoinkaan. Nyt on vain se ongelma, että ei pysty suorittamaan mitään kunnon ohjelmia, kun se haluaisi sitten tehdä tuon "> test/test2.tmp" homman, mutta jos sinne sitten lisäisi jonkun "exec" komennon, ainoa ongelma, että tuohon ohjelmaan en aikonut upottaa yhtään komentoa vaan kaikki olisivat löytyneet bin-hakemistosta. No se viritys, jonka mä tein oli tälläinen:

alku:
print "W-UX Version 1.0"
s:
input "$", cline$
if cline$ = "command /n" then goto secondd
shell cline$ + " > test.tmp": goto ss
goto s

ss:
open "test.tmp" for input as #1
do
line input #1, tmp$
print tmp$
loop until eof(1)
close #1
goto s

second:
print "W-UX Version 1.0"
se:
input "$", c$
if c$ = "command /b" then goto ss
shell c$ + " > test2.tmp": goto secondd
goto se

secondd:
open "test2.tmp" for input as #1
do
line input #1, temp$
print temp$
loop until eof(1)
close #1
goto se

ps: Pitänee tutkia tuota Antin koodia...

juhaz [14.03.2004 08:13:06]

#

Tutkin nyt, kun en ollut niin väsynyt niin tuota omaa koodia ja vaikuttaa kyllä aika kehnolta :(
En ole kuitenkaan vielä Antin koodia tutkinut, mutta kyllä mä uskon, että pakko tähän on jokin keino olla...


Sivun alkuun

Vastaus

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

Tietoa sivustosta