VBS语言错误提示:未结束的字符串常量(800A0409)和语句未结束(800A0401)

问题背景

最近在看《计算机是怎么跑起来》的这本书,里面的例子都是用VB写得。从第一次开始,就一直运行不了。每次都是提示语句未结束(800A0401)的错误。

思考解决

1,语句未结束(800A0401)

由于没怎么看过VB语言,但是这个运行错误把我难倒了可不应该!所以我瞅了一下VB的语法,然后变量定义 的语法为:

Dim 变量名

还有的地方说是:

Dim 变量名 As Integer

然后发现下面的这个运行会报Windows编译错误:语句未结束(800A0401)。然后我发现,这个VBScript 和Visual Basic不是一个东西!

Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品开发的语言。 [1]
“Visual” 指的是开发图形用户界面 (GUI) 的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。 “Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,是一种在计算技术发展历史上应用得最为广泛的语言。
Visual Basic源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active X控件,用于高效生成类型安全和面向对象的应用程序 [2] 。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。

VBS是基于Visual Basic的脚本语言。VBS的全称是:Microsoft Visual Basic Script Edition。(微软公司可视化BASIC脚本版)。
其语言类似Visual Basic(VB)。

So,对于VB来说第二个是正确的变量声明方式,而对于VBS来说,第一个是正确的变量声明方式!

2,未结束的字符串常量(800A0409)

这个错误更是无语的,瞅下面代码是不是完全没有问题。但是它一直报错,然后我在百度的一个犄角旮旯里找到了答案!问题竟然是文本编码的毛病!通常我们为了使中文更好的显示,都会使用UTF-8编码作为默认。But,这里是一个例外,使用UTF-8编码无法通过编译。GB2312才是它的真爱哦~~~虽然我试了下ANSI编码也能正常运行,但是你懂的!~

Dim plaintext
	plaintext = InputBox("请输入明文。")
cipher = "" 
For i = 1 To Len(plaintext)
	letter = Mid(plaintext, i, 1)
	cipher = cipher & Chr(Asc(letter) + 3)
Next
MsgBox cipher

写在最后

陌生的世界陌生的人,对于陌生的领域还是要存在敬畏之心!Anyway 用VBS写要给Windows桌面程序貌似很简单,就是很多程序员经常玩恶作剧使用的嘛?

  • 11
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
这个错误通常是由于脚本中的引号正确配对导致的。请确保在每个字符串常量的开头和结尾都有一对引号。下面是修正后的代码: ```vbscript Set objShell = WScript.CreateObject("WScript.Shell") WScript.Echo "请将鼠标移到指定位置后按下空格键开始自动双击屏幕。" WScript.Sleep 500 ' 等待用户按下空格键 Do While Not objShell.AppActivate("VBScript") WScript.Sleep 100 Loop ' 获取鼠标坐标 Set objMouse = CreateObject("WScript.Shell").Exec("cmd /c echo %MOUSE_X% %MOUSE_Y%") strOutput = objMouse.StdOut.ReadAll arrCoords = Split(strOutput, " ") intX = arrCoords(0) intY = arrCoords(1) WScript.Echo "已获取鼠标坐标:" & intX & ", " & intY dtmEndTime = DateAdd("n", 1, Now) ' 运行一分钟的时间限制 blnExitLoop = False Do While Now < dtmEndTime And Not blnExitLoop ' 检查空格键是否被按下 If objShell.AppActivate("VBScript") Then strKeyState = objShell.SendKeys("{SPACE}", True) ' 如果空格键被再次按下,则退出循环 If strKeyState = "True" Then blnExitLoop = True End If End If ' 执行双击操作 objShell.Run "cmd /c echo WScript.Sleep 1000 ^& WScript.SendKeys ""{LEFTCLICK}"" > temp.vbs", 0, True objShell.Run "wscript.exe temp.vbs", 0, True objShell.Run "cmd.exe /C del temp.vbs", 0, True Loop WScript.Echo "已退出循环并关闭脚本。" ``` 请尝试使用修正后的代码,看看是否还会报错。如果还有其他问题,请提供详细的错误信息和堆栈跟踪,以便我更好地帮助你解决问题。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值