回 帖 发 新 帖 刷新版面

主题:让QB 支持中文 变量名,函数名

只要把 变量名,函数名 转换成 西文就可以
当然不是手工,下面是一个例子


'在QBasic中使用鼠标
DECLARE SUB 鼠标 (which!)
DECLARE SUB 鼠标初始化 ()
DECLARE SUB 鼠标状态 () '鼠标X坐标,鼠标Y坐标,鼠标左边按钮,鼠标右边按钮
DECLARE SUB 鼠标隐藏 ()
DECLARE SUB 鼠标显示 ()
DIM SHARED 鼠标左边按钮, 鼠标右边按钮, 鼠标X坐标, 鼠标Y坐标
'-----例子开始-------------------->>>
SCREEN 12

鼠标初始化
鼠标显示
CLS

DO
  
  '获取鼠标状态
  鼠标状态
  
  LOCATE 2, 1
  PRINT "Mouse "
  PRINT " Left Button :"; 鼠标左边按钮 '鼠标左钮状态
  PRINT " Right Button:"; 鼠标右边按钮 '鼠标右钮状态
  PRINT " X Position:"; 鼠标X坐标 '鼠标位置X
  PRINT " Y Position:"; 鼠标Y坐标 '鼠标位置Y
  PRINT
  PRINT
  IF 鼠标左边按钮 = -1 THEN '按下左侧钮画线
    LINE -(鼠标X坐标 + 3, 鼠标Y坐标), 5
  ELSEIF 鼠标右边按钮 = -1 THEN '按下右侧钮画线
    LINE -(鼠标X坐标, 鼠标Y坐标 + 3), 6
  ELSE
    LINE -(鼠标X坐标, 鼠标Y坐标), 3 '移动时画线

  END IF
  
  
  
  '获取键盘按键状态
  k$ = INKEY$
LOOP UNTIL k$ = CHR$(27) '按下Esc结束
'-----例子结束--------------------<<<


SUB 鼠标 (which)
  
  STATIC mouser$, AX%, bx%, cx%, dx%
  
  '0 = Mouse Init
  '1 = Mouse Driver
  '2 = Mouse Put
  '3 = Mouse Status
  '4 = Mouse Hide
  '5 = Mouse Show
  IF which = 0 THEN
    'mouser$ = SPACE$(57)
    
    asm$ = ""
    asm$ = asm$ + CHR$(&H55)                                  'PUSH    BP
    asm$ = asm$ + CHR$(&H89) + CHR$(&HE5)                     'MOV     BP,SP
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC)         'MOV     BX,[BP+0C]
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H7)                      'MOV     AX,[BX]
    asm$ = asm$ + CHR$(&H50)                                  'PUSH    AX
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA)         'MOV     BX,[BP+0A]
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H7)                      'MOV     AX,[BX]
    asm$ = asm$ + CHR$(&H50)                                  'PUSH    AX
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8)         'MOV     BX,[BP+08]
    asm$ = asm$ + CHR$(&H8B) + CHR$(&HF)                      'MOV     CX,[BX]
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H6)         'MOV     BX,[BP+06]
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H17)                     'MOV     DX,[BX]
    asm$ = asm$ + CHR$(&H5B)                                  'POP     BX
    asm$ = asm$ + CHR$(&H58)                                  'POP     AX
    asm$ = asm$ + CHR$(&H1E)                                  'PUSH    DS
    asm$ = asm$ + CHR$(&H7)                                   'POP     ES
    asm$ = asm$ + CHR$(&HCD) + CHR$(&H33)                     'INT     33
    asm$ = asm$ + CHR$(&H53)                                  'PUSH    BX
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC)         'MOV     BX,[BP+0C]
    asm$ = asm$ + CHR$(&H89) + CHR$(&H7)                      'MOV     [BX],AX
    asm$ = asm$ + CHR$(&H58)                                  'POP     AX
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA)         'MOV     BX,[BP+0A]
    asm$ = asm$ + CHR$(&H89) + CHR$(&H7)                      'MOV     [BX],AX
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8)         'MOV     BX,[BP+08]
    asm$ = asm$ + CHR$(&H89) + CHR$(&HF)                      'MOV     [BX],CX
    asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H6)         'MOV     BX,[BP+06]
    asm$ = asm$ + CHR$(&H89) + CHR$(&H17)                     'MOV     [BX],DX
    asm$ = asm$ + CHR$(&H5D)                                  'POP     BP
    asm$ = asm$ + CHR$(&HCA) + CHR$(&H8) + CHR$(&H0)          'RETF    0008
    
    mouser$ = asm$
    
    AX% = 0
    bx% = 0
    cx% = 0
    dx% = 0
    鼠标 1
    MouseInitAx% = AX%
  END IF
  IF which = 1 THEN
    DEF SEG = VARSEG(mouser$)
    mouser% = SADD(mouser$)
    CALL Absolute(AX%, bx%, cx%, dx%, mouser%)
  END IF
  IF which = 2 THEN
    AX% = 4
    cx% = X%
    dx% = Y%
    bx% = 0
    鼠标 1
  END IF
  IF which = 3 THEN
    AX% = 3
    鼠标 1
    鼠标左边按钮 = ((bx% AND 1) <> 0)
    鼠标右边按钮 = ((bx% AND 2) <> 0)
    鼠标X坐标 = cx%
    鼠标Y坐标 = dx%
  END IF
  IF which = 4 THEN
    AX% = 2
    bx% = 0
    cx% = 0
    dx% = 0
    鼠标 1
  END IF
  IF which = 5 THEN
    AX% = 1
    bx% = 0
    cx% = 0
    dx% = 0
    鼠标 1
  END IF
END SUB

SUB 鼠标隐藏
  鼠标 4
END SUB

SUB 鼠标初始化
  鼠标 0
END SUB

SUB 鼠标显示
  鼠标 5
END SUB

SUB 鼠标状态  '鼠标X坐标, 鼠标Y坐标,鼠标左边按钮,鼠标右边按钮
  鼠标 3
END SUB

回复列表 (共7个回复)

沙发

这些东西根本没有意义啊
而且在真正的纯qb环境下qb都是显示不出中文的
如果追求中文编程不妨用易语言

板凳

怎么会没用,至少象我这样不懂英文的人看了一目了然,知道程序的意思
[quote]而且在真正的纯qb环境下qb都是显示不出中文的
[/quote]
你没试过不要随便否定人家,我是自己感觉好用,才推荐给大家

3 楼

我现在用QB......
一般是先运行ccdos(以前用ucdos.嫌它大了点.后用pdos95...可现在变成xp系统了).再运行QB.exe
当然这些都是写好了放在一个bat文件中的.
我用中文写注释....怕了以后自己看不懂自己的程序.
运行速度有影响?怕什么.只是写程序时用...反正最后要编译成EXE文件的..

所以鉴定的结果是:
  有用!!

4 楼

只能说程序写的少
脑子里还都是中文的概念的时候需要靠这样的手段来辅助吧
不过我提到了,不是现在出了支持中文编程的易语言了吗?
这样的转化也就是自娱自乐了

5 楼

[quote]怎么会没用,至少象我这样不懂英文的人看了一目了然,知道程序的意思
[quote]而且在真正的纯qb环境下qb都是显示不出中文的
[/quote]
你没试过不要随便否定人家,我是自己感觉好用,才推荐给大家[/quote]
不是我否定你
而是这样会养成不好的程序设计习惯,以后转别的语言的时候会需要额外的时间
这些东西存在是为了过渡的而不是让人长期依靠的

6 楼

[quote]
不是我否定你
而是这样会养成不好的程序设计习惯,以后转别的语言的时候会需要额外的时间
这些东西存在是为了过渡的而不是让人长期依靠的
[/quote]
这个怎么会是不好程序设计习惯?
对于一个大一点程序,都要写 企划,伪代码的

这只能说明一个问题:

          你没有做过一个大程序!!!
言重了!
为了不伤1楼专家面子!!,我给他加了分,哈哈!!
严重支持 3楼<冷石_jasv>

7 楼

即使在中文环境下QB也不能用中文变量名和函数名

当然你在写流程图的时候用中文用E文随便你了, 写代码的时候就不行

此贴标题与内容严重不符!!!

我来回复

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