主题:请帮个忙!谢谢! (正如ZOM所了,我遇到特殊情况了!
sanliren
[专家分:0] 发布于 2005-09-01 23:08:00
在上几帖中有有这样一帖子:
有2文件,分别为:A.TXT 和 B.TXT
如何判别a.txt和b.txt2个文本是否相同,当相同就运行SHELL "A.EXE"命令,如果不相同就运行SHELL "B.EXE"命令?
说明:假设A.TXT里有一串数字 12345678
B.TXT里有一串数字也是 12345678
那么A.TXT就和B.TXT相同.
如果2个文本数字的大小和数字的位数不同,那么就2个文本不相同.
谢谢!
open "A.txt" for binary as #1
open "B.txt" for binary as #2
if lof(1)=lof(2) then
same=-1
do until eof(1)
a$=input$(16383,#1)
b$=input$(16383,#2)
if a$<>b$ then
same=0
exit do
endif
loop
endif
close #1,#2
if same then shell "A.EXE" else shell "B.EXE"
请问如何把他改成:
如果 A.TXT里的数字大于B.TXT里的数字则运行 shell "A"
如果 A.TXT里的数字小于B.TXT里的数字则运行 shell "B"
请大家帮个忙,谢谢了!
回复列表 (共11个回复)
沙发
moz [专家分:37620] 发布于 2005-08-30 17:54:00
这个好像很简单
把这一句改一下就行了
if a$<>b$ then
改成
if a$<b$ then
就可以了
但至于你那些数字的位置和怎样比较具体的大小
比如说
123456789
和
999
这些特殊情况的处理嘛......
需要看你的文件的具体可能性.
板凳
def [专家分:3380] 发布于 2005-08-30 19:08:00
直接val了把,不用那么费事,moz
val直接把其他字符前的数字转换为数值
3 楼
sanliren [专家分:0] 发布于 2005-08-30 20:56:00
谢谢!
4 楼
moz [专家分:37620] 发布于 2005-08-30 21:12:00
val 我知道
所以说得看具体的比较要求
如果只是比较值的大小,应该用val
5 楼
spray [专家分:180] 发布于 2005-09-01 06:16:00
建议:请在标题中具体、明确点明主题,最好不用“小菜问题”、“跪求”之类的模糊标题。
6 楼
sanliren [专家分:0] 发布于 2005-09-01 22:58:00
为什么程序在判别大小时91402 反而比101402大呢?
其他的都正常如:81402和71402
71402和61402
............
都是前者大
请MOZ帮忙能帮我解决这个问题吗?
7 楼
moz [专家分:37620] 发布于 2005-09-02 11:43:00
这不是我料的,
是 def 说的,
他也说了有解决办法.
你再把这一句改一下:
if a$<b$ then
改成:
if val(a$) < val(b$) then
应该可以的了.
8 楼
sanliren [专家分:0] 发布于 2005-09-04 21:55:00
改了以后好是和老的一样,比较还是错误.
9 楼
moz [专家分:37620] 发布于 2005-09-05 12:33:00
数值里是不是有逗号 "," ?
10 楼
moz [专家分:37620] 发布于 2005-09-05 12:39:00
如果没有逗号的话:
open "A.txt" for input as #1
open "B.txt" for input as #2
input #1,a
input #2,b
close #1,#2
if a=b then shell "A.EXE" else shell "B.EXE"
如果有逗号的话:
open "A.txt" for input as #1
open "B.txt" for input as #2
line input #1,a$
line input #2,b$
quduohao a$
quduohao b$
close #1,#2
if val(a$)=val(b$) then shell "A.EXE" else shell "B.EXE"
sub quduohao c$
for i%=1 to len(c$)
if mid$(c$,i%,1)="," then mid$(c$,i%,1)=" "
next
end sub
我来回复