回 帖 发 新 帖 刷新版面

主题:[HELP ME]关于BLOAD BSAVE

对于BLOAD BSAVE两个语句不甚了解,请不吝赐教。

回复列表 (共6个回复)

沙发

BLOAD BSAVE可以把内存里的内容完整的保存到一个文件里
在使用BASVE的时候可以先把当前的段定位到你要保存的段
文本模式的段是在B800:0000
比如在文本模式下你想保存当前屏幕的内容
先定位段纸
DEF SEG=&hB800
然后就可以用BSAVE保存到文件了
也就是说,你可以保存内存中任意的内容
BLOAD的过程也是一样先必须定位段址
如果更改了段址比如
保存的是B800
恢复的时候是B900
那么你就相当于把B800内存中的内容复制到了B900了

保存以后的文件比你要保存的长度大2个,你可以用16进制的文件编辑器打开看!
一个字是保存的段纸,还有一个是偏移地址

板凳

'Bsave
def seg=varseg(a(0))      '定义段地址为数组的地址,不一定要是0的
bsave "文件名",varptr(a(0),l   '从数组的某个地址开始,这里是0开始,长度为l
def seg                        '存到“文件名”的文件去,然后恢复默认段地址

'Bload
def seg =varseg(a(0))          '定义段地址
bload "文件名",varptr(a(0))    '把文件的内容读到数组的地址去
def seg                        '恢复段地址

’所存的文件格式好像是
长度,内容,内容.......
至于图形操作,异曲同工而已,都是内存操作

3 楼

这个方法可以让烦人的bload/bsave离的远远的.
Example:
保存图片(16*16):
open "data.dat" for output as #1
for i = 1 to 16
  for j = 1 to 16
    write #1,bmp(i,j)
  next
next
close #1

取出图片:
dim bmp2(129) as integer
dim u as long
open "data.dat" for input as #1
for i = 1 to 128
  input #1,x,y
  u = x + 255 * y
  if u > 32767 then u = u - 65536
  bmp2(i + 1)=u
next i
bmp2(0)=128
bmp2(1)=16
put(1,1),bmp2,pset

在第一个程序里的数组bmp保存的是一个256色的位图.
让bload/bsave见鬼去吧!

另:若图片是20*20的则把第二段倒数第三行和倒数第二行改成:
bmp2(0)=200
bmp2(1)=20
若是12*12的就是
bmp2(0)=72
bmp2(1)=12
......

4 楼

为什么摆放着有煮熟了的饭你不吃,
偏要自己再去煮呢?会更好吃一点吗?

5 楼

三楼 的很有原创精神,值得提倡!!

6 楼

那个贴...
那是无耻的卑鄙的BT的路人皆知的骗30分的手段......^o^

我来回复

您尚未登录,请登录后再回复。点此登录或注册