|

    |
总是有人说现在学DOS没用了,其实,很多时候DOS还是很方便的,例如,如果你的机子还装有DOS6,里面有QBASIC,你就可以用它来非常方便地生成字典了,应该说,很多时候要写些小程序,用QBASIC来完成最简便快捷,而你不需要安装什么大型的复杂的编程语言程序,只要你装了DOS5/DOS6,用里面的QBASIC就行了,而且QBASIC的语法也不复杂,一般就算没学过的人,只要英语水平一般,都可以看得懂,我认为,QBASIC可以说是DOS时代最简单也最普及的一程脚本语言,虽然正式的QB4.5也算是一种编译语言,但用的人不多,用得多还是DOS带的这种只能解释的QBASIC1.0。
好了,不想说太多关于QBASIC的,本文也不是想详细介绍QBASIC(如果确实有很多人想了解QBASIC,我以后会考虑写一个关于QBASIC的教程),也不是详细讲解QBASIC的用法的,只是想如何介绍如何用QBASIC来生成字典,在也许是在没有字典生成工具的时候按照自己意思生成字典的最方便的一种方法吧。如果你的系统上没有安装DOS6,可以到还安装有DOS6的朋友的机子上拷贝QBASIC.*回来也可以用。
一、生成顺序的数字
OPEN "C:\NUMBER.DIC" FOR OUTPUT AS #1
'打开指定文件用于输出 FOR I = 1 TO 10000 '开始由1到10000的循环 PRINT #1, I
'将I的值打印到#1,即上面指 '定的文件中 NEXT I '下一循环值 CLOSE '关闭所有打开的文件,这是
'个好习惯
很简单,是吧,这样文件中会生成 1 2 3 ... 10
11 12 ... 100 101 102 ... 9999
10000 这样的序列,不过,有时有些地方需要位数一样长的序列,例如要: 00001 00002
... 00101 00102 这样的,那怎么办呢?方法有很多,不过主要有两种,先来看看第一种
㈠ 方法同上面的例子,只是在生成后人为补上前面的0,即: OPEN "C:\NUMBER.DIC" FOR
OUTPUT AS #1 FOR I = 1 TO 10000 '-----------------------
A$=STR$(I) '先把I转换成字符串以便按字符串来运算 DO WHILE LEN(A$) < 5
'如果串的长度小于5,则循环 A$ = "0" + A$ '在字符串前面补0 LOOP '循环直到A$的长度足够
'------------------------ PRINT #1, A$ '这次打印的是A$,不是I
NEXT I CLOSE
㈡ 其实在这种情况下,还有更方便的方法,而且程序效率也更高:
OPEN "C:\NUMBER.DIC" FOR OUTPUT AS #1 FOR I = 100001 TO
110000 '注意这里变了,先产生六位的 A$ = STR$(I) '转为字符串 A$ = RIGHT$(A$,5)
'再把左边一位丢掉,即取右边五个字符:) PRINT #1, A$ NEXT I CLOSE
二,日期字典的生成
很多人的信箱用的密码是生日,一般都是801125或19801125之类的形式,如果你用一个日期字典去扫描一下,你会吃惊用生日做字典的人的人数之多,下面再谈谈如何生成一个日期字典:
OPEN "C:\DATE.DIC" FOR OUTPUT AS #1 FOR Y=60 TO 80
FOR M=1 TO 12 FOR D=1 TO 31 A$=STR$(Y)+STR$(M)+STR$(D)
NEXT D NEXT M NEXT Y CLOSE
看!其实多简单,这样一个包含1960至1980的所有有效日期的字典就做成了,如果想要八位的日期,只要把上面第二句中的FOR
Y=60 TO 80改为FOR Y=1960 TO
1980就行了。当然,这样里面还包含有600231这个的不合理日期,如果你有兴趣,可以根据历法的算法把这些日期去掉,不过我觉得反正机器多扫几个也差不了多少,去不去都没所谓。
三,字母字典 这里再举个简单的字母方面的字典吧: OPEN "C:\3CHR.DIC" FOR
OUTPUT AS #1 FOR I = 65 TO 90 FOR J = 65 TO 90 FOR K =
65 TO 90 A$ = CHR$(I) + CHR$(J) + CHR$(K) PRINT #1, A$
NEXT K NEXT J NEXT I
FOR I = 97 TO 122 FOR J
= 97 TO 122 FOR K = 97 TO 122 A$ = CHR$(I) + CHR$(J) +
CHR$(K) PRINT #1, A$ NEXT K NEXT J NEXT I CLOSE
#1
这是一个生成三个字符的字母的组合,前半部分是生成三个大写字母的组合的,65到90就是A到Z的ASCII码,后半段是生成三个小写字母的组合的,97到122是a到z的ASCII码。为了简单起见,没有生成大小写混合的情况。
※ ※ ※ ※ ※ ※ ※ ※ ※ ※ ※
其实,一个好的字典档会是成功的一半,现在很多地方有字典生成器,去下一个当然是最简单最方便的,可是如果你刚好手头上没有字典生成器,又有QBASIC,上面说的就是一个解决的办法,当然,所举的都是些简单的例子,只是想起个抛砖引玉的作用,只要你对QBASIC有一定的了解,你一定能编出更完善更复杂的字典生成程序的,以上内容仅供参考。
—————————— 《溯雪论坛发帖守则》
本论坛不欢迎如下类型的帖子,此类帖子会被关闭或删除,本人恕不回复。 一,溯雪完全无关
二,无内容或内容过于简单,标题无意义的 三,个人联系的帖子。和标题为“某某请进”之类的 四,要求代破密码的
五,同一帖子多次重复的,灌水的 六,政治敏感话题,语言不文明,攻击他人的
七,溯雪手册中已有详细介绍或前面帖子中已有大量回复的
|  |
 | |