Teen QB:llä semmosta merkkigrafiikkapeliä, mutta jälleen ongelma SHELL:in kanssa. Tässä tulee osa koodia:
OPEN "profile.sav" FOR BINARY AS #1 A = LEN(A$) GET #1, 1, A FOR I = 1 TO A GET #1, , AA A$ = A$ + CHR$(AA) NEXT CLOSE OPEN "location.sav" FOR BINARY AS #1 A = LEN(C$) GET #1, 1, A FOR I = 1 TO A GET #1, , AA C$ = C$ + CHR$(AA) NEXT CLOSE GOTO latausilmoitus
latausilmoitus: CLS COLOR 6 PRINT "Seuraava profiili ladattu onnistuneesti: "; A$ PRINT "" PRINT "" COLOR 4 PRINT "Jatka painamalla [CTRL]..." SLEEP SHELL C$
Mutta kun ajan ohjelman läpi, ohjelma toimii kunnolla niinkuin pitäisikin, SHELL-komentoon asti. Ohjelma jättää kokonaan huomioimatta tuon SHELL-komennon. Ja noiden .sav-filujen sisältö on tehty seuraavalla koodilla:
LINE INPUT "Kirjoita profiilin nimi: "; A$ OPEN "profile.sav" FOR BINARY AS #1 A = LEN(A$) PUT #1, 1, A FOR I = 1 TO A AA = ASC(MID$(A$, I, 1)) PUT #1, , AA NEXT CLOSE F$ = "main.exe" OPEN "location.sav" FOR BINARY AS #1 A = LEN(F$) PUT #1, 1, A FOR I = 1 TO A AA = ASC(MID$(F$, I, 1)) PUT #1, , AA NEXT CLOSE
Mikä tässä koodissa käytännössä mättää?
Nyt tarkistin mitä tuon aikana tapahtuu. Komento "map.exe": "Virhellinen komento tai tiedostonimi". Kyllä se on samassa kansiossa kun tuo main.exe.
EDIT: Tarkistin tuon printillä. Tein PRINT C$ ja SLEEPin alle, ja ruudulle tulee siis SHELLin aikana tuo virheilmoitus. Muttakun laitoin komentoriviohjelmani tuonne samaan hakemistoon ja suoritin sillä komennon map.exe, se kyllä toimii. Mutta miksen pysty tuolla ohjelmalla sitä avaamaan??
EDIT2: Nyt tarkistin, hakeeko tuo komento oikeasta kansiosta. Tein sen paljaalla SHELL-käskyllä: ei hae oikeasta kansiosta. Pyssää edelliseen kansioon. Miksi se pyssää edelliseen kansioon.
EDIT3: Se näköjään pyssää siihen, missä Brun45 on tullu vastaan. Miten sen sais pois.
Kyllä sen pitäisi automaattisesti etsiä siitä hakemistosta, mistä se on käynnistetty. Onko ohjelmasi käännetty, vai tulkkaatko sitä QB:llä? Jos tulkkaat, se etsii siitä hakemistosta, mistä QB on käynnistetty.
Se tekee sitä molemmilla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.