Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB: fake os +QB

juhaz [08.11.2003 10:07:55]

#

vaikka porukka on sanonut, että "älä tee niitä fake osseja" niin mä olen jatkanut niiden tekoa ja yöllä väsyneenä tuli taas yksi idea mitä tosin en saanut toimimaan, joten haluaisin kuulla vaikka jonkun Quickbasic asiantuntijan ajatuksen kuinka saada se toimimaan ilman "out of memory" ilmoitusta :)

Eli mulla on tos.exe ja cmd.exe nimiset tiedostot eli tos.exe on se, joka tarjoaa palveluita, joita cmd.exe sitten pyytää... tjs...

kuvitellaan nyt, että tos.exe sisältää koodia

alku:
open "sys.ini" for input as #1
input #1, sta$
close #1
if sta$ = "1" then goto main
open "sys.ini" for output as #1
print #1, "1"
close #1
shell ("cmd.exe")

main:
ext$ = command$
if mid$(ext$, 1,10) = "print_text" then
print mid$(ext$, 12,125)
end if
if mid$(ext$, 1,6) = "locate" then
open mid$(ext$, 8,125) for input as #1
input #1, x,y
close #1
locate x,y
end if
if ext$ = "ask" then
input "", a$
end if
if mid$(ext$, 1,3) = "exe" and mid$(ext$, 5,6) = "a$" then
if a$ = "quit" then goto lopeta
shell a$
end if
goto main

lopeta:
open "sys.ini" for output as #1
print #1, "0"
close #1
end

ja cmd.exe sisältää koodia

s:
shell ("tos.exe print_text TOS Fake os 1.0")
shell ("tos.exe print_text C:\")
shell ("tos.exe locate cmd.001")
'cmd.001 sisältää: 2,4
shell ("tos.exe ask")
shell ("tos.exe exe a$")
goto s

Minä en saa tätä toimimaan vaan se valittaa heti alkuunsa out of memorya, joten onko jotain järkevää tapaa toteuttaa tälläinen? Heti, kun pääsisi niistä out of memory ongelmista niin voisi jatkaa tuon kehittämistä paremmaksi, mutta nyt se ei toimi alkuunsa, kun se valittaa sitä per*eleen ärsyttävää out of memorya.

sooda [08.11.2003 10:21:10]

#

kannattaa ottaa tosta tos.exesta toi goto main pois muuten se jää siihen ikuisesti looppaan eikä palaa tonne cmd.exe:een, ja mikään komento ei toimi sulla koska command$ antaa komentorivin isoilla kirjaimilla esim. toi sun shell ("tos.exe print_text TOS Fake os 1.0") antaa command$ jutskaan PRINT_TEXT TOS FAKE OS 1.0 eli kannattaa vaihtaa tos.exesta kaikki iffit ISOIKS_KIRJAIMIKS jotta komennot toimisi.

juhaz [08.11.2003 10:44:25]

#

en tiedä mikä aiheutti, mutta nyt ei tule enään out of memorya... kiitos neuvoistasi sooda :)

edit: Kyllä se ihan niinkuin jotenkuten toimii, mutta toi ask ei oikein toimi tai ainakaan exe, kun exe:ssä tarkistetaan a$ mikä edellisessä ask komennossa käyttäjä antaa eli jos siellä exe:n toiminnoissa on vaikka jotain if a$ = "cls" then cls tai if a$ = "quit" then end niin se ei lopeta eikä tuo eka cls tuota tyhjää ruutua eli pientä apua vielä tarvitsen, mutta kuitenkin tuo kyllä jo toimii jotenkuten.

juhaz [08.11.2003 12:26:21]

#

Miksiköhän tämä osa ei tunnu toimivan?

if ext$ = "ask" then
input "", a$
end if
if mid$(ext$, 1,3) = "exe" and mid$(ext$, 5,6) = "a$" then
if a$ = "quit" then goto lopeta
shell a$

jos lisää tuohon if a$ = "cls" then cls ja ajaa ohjelman niin se ei toimi... ei ruutu tyhjene.

Antti Laaksonen [08.11.2003 12:42:23]

#

Ainakaan a$ ei varmaan kuulu lainausmerkkien sisälle neljännen rivin IF-lauseessa.

juhaz [08.11.2003 13:06:30]

#

kyllä se sillein kuuluu, koska cmd.exe kutsuu tos.exe komennolla exe a$, jolloin sen pitäisi toteuttaa se mitä askiin käyttäjä antaa komennoksi, mutta tajusin juuri, että toimisikohan se jos laittaisi tuonne ask:iin sen toiminnonkin eli kaikki shellit, cls:t ja quitit....

Vastaus

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

Tietoa sivustosta