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

版主: 總版面管理員

回覆文章
頭像
希洛
一級會員
一級會員
文章: 319
註冊時間: 2003-08-15 5:01 PM
來自: 遠太天邊、近在眼前的世界
聯繫:

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

文章 希洛 »

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

文章 Mowd »

讚喔!如果再寫詳細一點就可以列為精華文章囉!
Mowd 與你的交流天地
歡迎您的到來
頭像
希洛
一級會員
一級會員
文章: 319
註冊時間: 2003-08-15 5:01 PM
來自: 遠太天邊、近在眼前的世界
聯繫:

文章 希洛 »

實例說明:
請先下載範例檔

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

PS程式開頭的記憶體位址:8193
即RAM第8KB以後
附加檔案
TEST.bas
(143 Bytes) 已下載 683 次
Mowd
系統管理員
系統管理員
文章: 1828
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd »

第20行的保留區,不太懂耶。
Mowd 與你的交流天地
歡迎您的到來
頭像
希洛
一級會員
一級會員
文章: 319
註冊時間: 2003-08-15 5:01 PM
來自: 遠太天邊、近在眼前的世界
聯繫:

文章 希洛 »

第20行的內容因為不是語法,所以會以 ASCII碼被保存再記憶體中,
你就可以原封不動把它抓出來用啦!
頭像
希洛
一級會員
一級會員
文章: 319
註冊時間: 2003-08-15 5:01 PM
來自: 遠太天邊、近在眼前的世界
聯繫:

文章 希洛 »

與內存有關的教學,改天會繼續 post
Mowd
系統管理員
系統管理員
文章: 1828
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd »

暸了,這麼做很方便,不過我寫程式很少寫到字符錯亂,這大概只有遊戲會吧~
Mowd 與你的交流天地
歡迎您的到來
空閒
會員
會員
文章: 112
註冊時間: 2003-08-03 3:03 PM

文章 空閒 »

這有peek語句,有版本問題媽
頭像
希洛
一級會員
一級會員
文章: 319
註冊時間: 2003-08-15 5:01 PM
來自: 遠太天邊、近在眼前的世界
聯繫:

文章 希洛 »

目前在NC2000和NC1020測試成功,
不果只要執行看看就知道行不行了!
頭像
ahk12345
會員
會員
文章: 115
註冊時間: 2004-09-28 3:00 PM

文章 ahk12345 »

模後面那麼多a是啥意思阿?
張頌亞
會員
會員
文章: 81
註冊時間: 2004-02-08 5:42 PM
來自: 台灣的台中
聯繫:

文章 張頌亞 »

那一大串a只是示範而已啦
不過示範檔只有print到模而已
如果你改掉peek位址的話可以連後面的aaa...一起叫出來喔
頭像
helldeathscyt
二級會員
二級會員
文章: 383
註冊時間: 2003-07-17 8:35 PM
來自: 深淵地獄
聯繫:

文章 helldeathscyt »

可是原本寫遊戲就已經有空間限制
這樣確實能防止文字亂掉
這個問題確實也影響我蠻久的了
吾乃地獄之王,是為散播毀滅的種子,掃除所有塵世汙穢,平息痛苦之哀號
~地獄死神

白目橫行的時代...orz
網路真奇妙,
處處白目擾,
趕也趕不走,
白目死不了.
回覆文章