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.
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.
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.
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.
Ainakaan a$ ei varmaan kuulu lainausmerkkien sisälle neljännen rivin IF-lauseessa.
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....
Aihe on jo aika vanha, joten et voi enää vastata siihen.