易码技术论坛

 找回密码
 加入易码
搜索
查看: 781281|回复: 23

[求助]原来一个高手做的,可是我没看懂

[复制链接]
发表于 2005-10-20 19:46:00 | 显示全部楼层
如果我没猜错 这个应该是输入表达式就可以求出值的计算器 原理是将表达式按照POKE入内存中 运行即可 而第10行就是用来占内存空间用的 没有任何意义 你可以写成
10 CLS:CLS:CLS:CLS:CLS:CLS……
10 A$="QWEIYKSAJDHFKJAH FAKDHKJHCKJDHSFKAHF"
等等都没有关系 程序在运行中会将第10行覆盖成为别的程序 也就是表达式 然后goto10进行计算
 楼主| 发表于 2005-10-20 22:24:00 | 显示全部楼层
我想移植这段程序到其他的程序里面去,但是不知道为什么总会出错,

当把这段程序排在比较后面的行号的时候(如在200行后面)不是(相当于第10行)出现语法错误就是(相当于第180行)出现"没有定义的行号"错误(其实是定义的行号)

如果排在前面也总是有莫名其妙的错误,请教这是怎么回事
发表于 2005-10-20 23:00:00 | 显示全部楼层
请原封不动的照抄上面那段试试 不要更改任何地方 包括行号

如是出现语法错误请告知具体出错信息
 楼主| 发表于 2005-10-22 12:32:00 | 显示全部楼层
一点都不改的话怎样引用啊,我试了一下把10行内容COPY到"11"行,再改10行为空语句,程序就出了.真无语了
发表于 2005-10-22 18:20:00 | 显示全部楼层
出了?什么意思?因为这个涉及对内存的操作(就是对行号10那句所占内存的操作 所以变动程序所在位置或者一些东西后就会出错
发表于 2005-10-23 01:01:00 | 显示全部楼层
汗..不懂
发表于 2005-10-26 18:22:00 | 显示全部楼层
不行,NC2600C/NC3000运行后输入任意算式就显示错误!
发表于 2005-10-26 21:25:00 | 显示全部楼层
拜托告诉我出错的详细信息啊……
 楼主| 发表于 2005-10-25 15:11:00 | 显示全部楼层
"出错了",呵呵我打错了...

你能不能帮忙把"10 S=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"改成PEEK值或是其他什么好理解,好移植吗?要不这段程序的实际意义就不是很大了
发表于 2005-10-26 12:31:00 | 显示全部楼层
楼上的 10行本身就是一句没有任何意义的语句 它所起到的作用仅仅是用那一段长长的F去占掉一部分内存以供后面的POKE利用
发表于 2005-10-29 09:35:00 | 显示全部楼层
EASY!

什么都不输入,会出现 ILLEGALXXXX这你知道吧

可是输入:

例如1*2

会SYSTAX ERROR IN 70

可是程序基本上没有错啊!


发表于 2005-11-5 09:07:00 | 显示全部楼层
程序确实看上去没有错 但注意 如果你是用TXT2BAS转换的 那么很可能有一些空格会被去掉而导致语法错误 那是转换器的BUG 请问有这样的情况么?
发表于 2005-11-5 10:37:00 | 显示全部楼层
貌似是70行和130行有问题

你自己试试啊!
发表于 2005-11-6 22:57:00 | 显示全部楼层
不好意思我现在没有WQX了没办法试……
发表于 2005-11-12 18:48:00 | 显示全部楼层
一个利用BASIC解释器算表达式的工具~~

这个应该可以在除了1k系列以外的机器上使用

楼主如果对gvb还没有很深的了解就不需要研究这个了
发表于 2005-12-2 13:13:00 | 显示全部楼层
40 W=8207

这行有问题。。。不同的机器型号这个值可能不同。要移植不能就这么照抄。



ps:混乱羽翼的签名图太大了。


发表于 2005-12-30 12:46:00 | 显示全部楼层
大概是这样的!
发表于 2006-1-1 16:50:00 | 显示全部楼层
应该是变量存放地址不同的原因吧?

2K机型的变量表跟在程序后面的

1K不是这样
发表于 2006-1-25 19:28:00 | 显示全部楼层
这个其实很简单,没想到已经有人做出来了(我本来想将其用如函数绘图软件中去的)

bas编译文件时,会将一些运算符用一定的代号表示,这个程序就是处理一下输入的字符串,使字符串里的运算符被替换成相应的代号,再将字符串poke到s=以后,这样bas就认为是一个表达式从而可以算出它的值
发表于 2006-1-27 10:53:00 | 显示全部楼层
你输入了一个算式以后,就(举个例子:sin50+cos60+atn70+int(12.345)+(a$="HELLO"))

程序就会 自动更改第二行 ,从而使得第二行变成S=SIN50+COS60+ATN70+INT(12.345)+(A$="HELLO")

可能这就是为什么程序最后还有一个GOTO 10的缘故.早先在WQXNET中有高手讨论过"动态修改程序代码"的办法,应该就是上面的程序了.

以前的BASIC书里面也有,好象是叫"软件加密&*(&(实用(*&("的.
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-27 04:54 , Processed in 0.013743 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表