1 頁 (共 1 頁)

[教學]教你如何防止記憶體混亂字串

發表於 : 2003-11-14 6:11 PM
希洛
當變量一多時,哈電的爛記憶體往往會使得文字資料錯亂,
要怎麼解決呢?
很簡單!
再程式開頭寫入一個GOTO XXXX的語句,讓程式自動跳到真正程序的開頭,
再此行後一直到真正的程式開頭之件直接打入字串之不變量,
由於程式是從記憶體的8193開始的,
所以從此可以搜尋到剛才打入的字串,
需要時只要用PEEK語句調出來就可以了!
因為這個區段是隸屬於程式碼,所以記憶體無法擅自改動,
故可以安全存放不變的字串,
至於可變動字串建議使用隨機文件存取。

發表於 : 2003-11-15 12:00 AM
Mowd
讚喔!如果再寫詳細一點就可以列為精華文章囉!

發表於 : 2003-11-16 11:39 AM
希洛
實例說明:
請先下載範例檔

10 GOTO 30←跳到程序真正的起點
20 模aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa←預約的保留區
30 PRINT "YES"
40 FOR A=8205 TO 8207
50 PRINT CHR$(PEEK(A));:NEXT←到"模"所在的位址將字讀出並顯示

PS程式開頭的記憶體位址:8193
即RAM第8KB以後

發表於 : 2003-11-16 1:28 PM
Mowd
第20行的保留區,不太懂耶。

發表於 : 2003-11-16 10:29 PM
希洛
第20行的內容因為不是語法,所以會以 ASCII碼被保存再記憶體中,
你就可以原封不動把它抓出來用啦!

發表於 : 2003-11-16 10:30 PM
希洛
與內存有關的教學,改天會繼續 post

發表於 : 2003-11-16 10:37 PM
Mowd
暸了,這麼做很方便,不過我寫程式很少寫到字符錯亂,這大概只有遊戲會吧~

發表於 : 2003-11-16 10:55 PM
空閒
這有peek語句,有版本問題媽

發表於 : 2003-11-19 7:49 PM
希洛
目前在NC2000和NC1020測試成功,
不果只要執行看看就知道行不行了!

發表於 : 2004-12-04 1:18 PM
ahk12345
模後面那麼多a是啥意思阿?

發表於 : 2004-12-05 3:48 PM
張頌亞
那一大串a只是示範而已啦
不過示範檔只有print到模而已
如果你改掉peek位址的話可以連後面的aaa...一起叫出來喔

發表於 : 2004-12-09 3:30 PM
helldeathscyt
可是原本寫遊戲就已經有空間限制
這樣確實能防止文字亂掉
這個問題確實也影響我蠻久的了