Alla oleva koodinpätkä toimii Qbasic editorissa
niin kuin pitääkin, MUTTA jos koodin kääntää EXE-tiedostoksi,
tulos ei ole sama.
Eli
DIM TIETO%(2) DEF SEG = VARSEG(TIETO%(0)) POKE 0, 5 ' Sijoitetaan PRINT TIETO%(0) ' TIETO%(0) –muuttujaan arvo 5, ' käyttäen POKE –käskyä.
tulisi palauttaa arvon 5, mutta EXE-ohjelma
palauttaa arvon 0.
Vastaavasti
DIM TIETO%(2) DEF SEG = VARSEG(TIETO%(0)) TIETO%(0)=13 ' Sijoitetaan normaalisti arvo 13, mutta PRINT PEEK(0) ' luetaan arvo PEEK -käskyn avulla.
tulisi olla 13, mutta tulos on myös 0.
Tietääkö tähän kukaan ratkaisua? Eli miten saa tässä
tapauksessa EXE:ksi käännetyn ohjelman toimimaan samalla
tavalla kuin editorissa???
DIM tieto%(2) segment% = VARSEG(tieto%(0)) tieto%(0) = 1 'Sijoitetaan arvot normaalisti tieto%(1) = 2 ' tieto%(2) = 3 ' DEF SEG = segment% CLS PRINT "Normaalisti tulostettuna: "; tieto%(0); PRINT tieto%(1); tieto%(2) PRINT "'PEEK' -käskyn avulla luetut arvot:"; PEEK(0); PRINT PEEK(2); PEEK(4) ERASE tieto% ' Nollataan taulu. POKE 0, 1 ' Sijoitetaan arvot POKE käskyllä. POKE 2, 2 ' POKE 4, 3 ' PRINT PRINT PRINT "ARVOT SIJOITETTU 'POKE'-KÄSKYN AVULLA:" PRINT PRINT "Normaalisti tulostettuna: "; tieto%(0); PRINT tieto%(1); tieto%(2) PRINT "'PEEK' -käskyn avulla luetut arvot:"; PEEK(0); PRINT PEEK(2); PEEK(4)
Aihe on jo aika vanha, joten et voi enää vastata siihen.