Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: QB: ONGELMA: Peek/Poke/Varseg/EXE-Tiedostot

J.J. [30.01.2004 17:28:05]

#

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)

Vastaus

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

Tietoa sivustosta