仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 530|回复: 8
打印 上一主题 下一主题

[学习教程] ASP教程之VBScript语法毛病

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的vbscript|毛病|语法  假如VBScript语句布局违背了一个或多个VBScript剧本言语语律例则,就会发生VBScript语法毛病。VBScript语法毛病一般在实行程序前,编译程序时发生。十进制十六进制说 明1001800A03E9内存不敷1002800A03EA语法毛病1003800A03EB短少:1005800A03ED必要(1006800A03EE必要)1007800A03EF短少]1010800A03F2必要标识符1011800A03F3必要=1012800A03F4必要If1013800A03F5必要To1014800A03F6必要End1015800A03F7必要Function1016800A03F8必要Sub1017800A03F9必要Then1018800A03FA必要Wend1019800A03FB必要Loop1020800A03FC必要Next1021800A03FD必要Case1022800A03FE必要Select1023800A03FF必要表达式1024800A0400必要语句1025800A0401必要语句的停止1026800A0402必要整数常数1027800A0403必要While或Until1028800A0404必要While,、Until,或语句未停止1029800A0405必要With1030800A0406标识符太长1031800A0407有效的数字1032800A0408有效的字符1033800A0409未停止的串常量1034800A040A未停止的正文1037800A040D有效利用关头字Me1038800A040Eloop没有do1039800A040F有效exit语句1040800A0410有效for轮回把持变量1041800A0411称号重界说1042800A0412必需为行的第一个语句1043800A0413不克不及赋给非Byval参数1044800A0414挪用Sub时不克不及利用圆括号1045800A0415必要笔墨常数1046800A0416必要In1047800A0417必要Class1048800A0418必需在一个类的外部界说1049800A0419在属性声明中必要Let,Set或Get1050800A041A必要Property1051800A041B参数数量必需与属性申明分歧1052800A041C在类中不克不及有多个缺省的属性/办法1053800A041D类初始化或停止不克不及带参数1054800A041EPropertyLet或Set最少应当有一个参数1055800A041F不必要的Next1056800A0420只能在Property或Function或Sub上指定Default1057800A0421申明Default必需同时申明Public1058800A0422只能在PropertyGet中指定Default
内存不敷
分派与该盘算机无效内存一样多的内存。这多是一个静态分派数组增加得太年夜,大概是工具实例数量过量。
要改正该毛病

  • 利用Erase语句来从头分派静态数组的贮存空间。
  • 利用ReDim语句来从头分派贮存空间。
  • 封闭任何已翻开、不用需的使用程序,文件大概源文件。

语法毛病
创立的语句中违背了VBScript的语律例则。
要改正该毛病

  • 反省两遍表达式中元素的数量。
  • 寻觅直接的括号。

必要(
当创立历程申明时未包括开括号“(”,
  1. Subfoox//x必要利用圆括号括起来。EndSub
复制代码
或利用redim语句。
  1. Redimx//x必要利用圆括号括起来。
复制代码
要改正该毛病

  • 增加左(开)括号“(”。

必要)
试图封装一套括号中的表达式,但未包括闭括号“)”。必需用一套开括号和闭括号封装一些表达式。
要改正该毛病

  • 给请求值的表达式增加右(闭)括号“)”。

必要标识符
利用VBScript保存词作为变量称号。
要改正该毛病

  • 利用别的称号(一个不是VBScript保存词的称号)。
  • 以[]封装保存词。

必要=
利用Set语句,但未包括=
要改正该毛病

  • 利用Set语句的完全语法。

必要If
创立了一个If...Then...Else块,但未一般停止块。块语句If必需为一行的第一个语句,且必需以EndIf停止。上面演示了一个If...Then...Else块的准确布局。
  1. [b]If[/b][i]condition[/i][b]Then
  2. [/b][[i]statements[/i]]
  3. [[b]ElseIf[/b][i]condition-n[/i][b]Then[/b]
  4. [[i]elseifstatements[/i]]]...
  5. [[b]Else[/b]
  6. [[i]elsestatements[/i]]]
  7. [b]End[/b][b]If[/b]
复制代码
要改正该毛病

  • 反省块If语句是不是以End语句。假如是的话,将它改成EndIf语句。

必要To
创立一个For...Next轮回,但没有在第一行中包括关头词To。一个For...Next轮回的第一行必需包括关头词To。上面演示了一个For...Next轮回的准确布局。
  1. [b]For[/b][i]counter[/i][b]=[/b][i]start[/i][b]To[/b][i]end[/i][[b]Step[/b][i]step[/i]]
  2. [[i]statements[/i]]
  3. [[b]ExitFor[/b]]
  4. [[i]statements[/i]]
  5. [b]Next[/b]
复制代码
要改正该毛病

  • 确保For...Next轮回包括了一切必需的部分。

必要End
创立布局但未一般停止。下表列出了必需以End语句停止的布局。
布局停止语句SubEndSubFunctionEndFunctionIfEndIfClassEndClassWithEndWithSelectEndSelect
要改正该毛病

  • EndSub语句停止一个Sub历程。
  • EndFunction停止一个Function历程。
  • EndIf语句停止一个If语句。
  • EndClass语句停止一个Class语句。
  • EndWith语句停止一个With语句。
  • EndSelect语句停止一个Select语句。

必要Function
创立一个Function历程,可是以关头词End停止,而不是以EndFunction语句停止。一个Function历程必需包括停止语句EndFunction
要改正该毛病

  • 以语句EndFunction停止Function历程。

必要Sub
创立了一个Sub历程,可是利用关头字End停止而不是利用EndSub语句停止。一个Sub历程必需包括一个EndSub停止语句。
要改正该毛病

  • 利用EndSub语句停止Sub历程。

必要Then
创立了一个If...Then...Else停止,但在第一行中为包括关头字Then。上面的代码演示了If...Then...Else布局的准确利用。
  1. [b]If[/b][i]condition[/i][b]Then[/b][i]statements[/i][[b]Else[/b][i]elsestatements[/i]]
复制代码
大概可使用块情势语法:
  1. [b]If[/b][i]condition[/i][b]Then[/b][[i]statements[/i]][[b]ElseIf[/b][i]condition-n[/i][b]Then[/b][[i]elseifstatements[/i]]]...[[b]Else[/b][[i]elsestatements[/i]]][b]End[/b][b]If[/b]
复制代码
要改正该毛病

  • 确保If...Then...Else布局包括了一切必需的部分。

必要Wend
创立了一个While...Wend轮回,可是没有准确停止轮回。一个While...Wend轮回必需利用语句Wend来停止。上面演示了一个While...Wend轮回的准确布局。
  1. [b]While[/b]condition
  2. Version[[i]statements[/i]]
  3. [b]Wend[/b]
复制代码
要改正该毛病

  • 确保While...Wend轮回包括了一切必需的部分。

必要Loop
创立了一个Do轮回布局,但未一般中止轮回。Do轮回布局与Loop语句相干联合束。上面演示了Do轮回布局的准确利用。
  1. [b]Do[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
  2. [[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b]
复制代码
大概可使用上面的语法:
  1. [b]Do
  2. [/b][[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
复制代码
要改正该毛病

  • 确保Do轮回布局包括了一切必需的部分。

必要Next
创立了一个For...Next轮回布局,但未一般停止轮回。一个For...Next轮回布局必需以一个Next语句停止。上面演示了一个For...Next轮回布局的准确布局。
  1. [b]For[/b][i]counter[/i]=[i]start[/i][b]To[/b][i]end[/i][[b]Step[/b][i]step[/i]]
  2. [[i]statements[/i]]
  3. [[b]Exit[/b][b]For[/b]]
  4. [[i]statements[/i]]
  5. [b]Next[/b]
复制代码
要改正该毛病

  • 确保For...Next轮回布局包括了一切必需的部分。

必要Case
创立Select...EndSelect机关,但未包括任何Case语句。上面演示了Select...EndSelect机关的准确利用办法。
  1. [b]Select[/b][b]Case[/b][i]testexpression[/i]
  2. [[b]Case[/b][i]expressionlist-n[/i][[i]statements-n[/i]]]...
  3. [[b]CaseElse[/b][i]expressionlist-n[/i][[i]elsestatements-n[/i]]]
  4. [b]EndSelect[/b]
复制代码
要改正该毛病

  • 确保Select...EndSelect机关包括一切必需的部分。

必要Select
创立了一个Select...EndSelect布局,但未包括停止语句EndSelect。上面演示了Select...EndSelect布局的准确利用办法。
  1. [b]SelectCase[/b][i]testexpression[/i]
  2. [[b]Case[/b]expressionlist-n[[i]statements-n[/i]]]...
  3. [[b]CaseElse[/b][i]expressionlist-n[/i][[i]elsestatements-n[/i]]]
  4. [b]EndSelect[/b]
复制代码
要改正该毛病

  • 确保Select...EndSelect布局包括了一切必需的部分

必要表达式
创立一个Select...EndSelect布局,但包括一个Case分句。CaseElse语句(失利的情形)必需在它本人那一行呈现。上面演示了Select...EndSelect布局的准确利用。
  1. [b]SelectCase[/b][i]testexpression[/i]
  2. [[b]Case[/b][i]expressionlist-n[/i][[i]statements-n[/i]]]...
  3. [[b]CaseElse[/b][i]expressionlist-n[/i]
  4. [[i]elsestatements-n[/i]]]
  5. [b]EndSelect[/b]
复制代码
要改正该毛病

  • CaseElse语句另起一行。

必要语句
作为参数传送给Execute语句的字符串没法被剖析为一个语句。Execute语句不克不及被用来静态实行VBScript代码。比方,思索以下的VBScript代码。
  1. Execute"msgbox1"由于msgbox是一个语句,以是无效。
  2. Execute"5*4"因为5*4没法被注释为一个语句以是失利。
复制代码
不单单是ExecuteEval,在任何必要一个语句的剧本代码的编译过程当中也发生Expectedstatement毛病。比方,以下代码在InternetExplorer中形成这个毛病,
  1. <html>
  2. <scriptlanguage=vbscript>
  3. 5*4
  4. </script>
  5. </html>
复制代码
注重这里有两个在VBScript中分歧且有关的语句,

  • 编译并实行不事情语句的Execute语句,
  • Execute办法.
要改正该毛病

  • 确保传送给Execute语句的字符串为一个语句。
  • 假如请求值的字符串为一个表达式,利用Eval

必要语句的停止
在语句开头外呈现笔墨。
要改正该毛病

  • 移往分外的笔墨。
  • 假如要正文代码行,在语句的开头处拔出单引号""。

必要整数常数
试图在Dim语句中利用十分数创立一个数组。在VBScript中,Dim语句中巨细值必需为一个常数。比方,
  1. Dima(10)无效。
  2. Dima(x)有效。
  3. Dima(1=2)有效
复制代码
要改正该毛病

  • 利用ReDim语句

必要While或Until
创立了一个Do轮回,可是未包括相干的WhileUntil关头词。一个Do轮回的测试前提必要在测试前提语句中利用一个WhileUntil关头词。上面演示一个Do轮回的准确布局。
  1. [b]Do[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
  2. [[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b]
复制代码
大概可使用语法:
  1. [b]Do
  2. [/b][[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
复制代码
要改正该毛病

  • 确保Do轮回包括了一切必需的部分。

必要While、Until或语句停止
创立了一个Do轮回,可是未包括相干的关头词WhileUntil。一个Do轮回的测试前提必要在测试前提语句中利用一个WhileUntil关头词。上面演示了一个Do轮回的准确布局。
  1. [b]Do[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
  2. [[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b]
复制代码
Or,youcanusethissyntax:
  1. [b]Do
  2. [/b][[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
复制代码
要改正该毛病

  • 确保Do轮回包括了一切必需的部分。
  • 利用关头字WhileUntil来停止Do轮回。loopwitheithertheWhileorUntilkeywords。

必要With
创立了一个With块,可是以关头词End而不是语句EndWith停止。一个With块必需利用一个EndWith语句停止。上面演示了With块的准确构成。
  1. [b]With[/b][i]object
  2. [/i] [i]statements[/i][b]
  3. EndWith[/b]
复制代码
要改正该毛病

  • 假如利用关头词End停止一个With块,将它改成EndWith语句。
  • 确保With把持布局了一切必需的部分。

标识符太长
创立了一个包括态多字符的变量或函数称号。限定为255个字符。
要改正该毛病

  • 选择一个较短的称号。

有效数字
表达式的一个值太年夜或超越局限。
<P>要改正该毛病

  • 利用较小的值。

有效字符
在一个表达式中试图利用双字节字符集(DBCS)或其他不被撑持的字符。
<P>要改正该毛病

  • 将不被撑持的字符封装在方括号[]中。

未停止字符串常数
没有效关闭的引号来停止字符串常数。字符串常数必需用一对引号来关闭。
<P>要改正该毛病

  • 在字符串尾部加上关闭的引号。

有效利用关头词Me
试图利用Set给标识符Me赋值。Me是一个被保存的标识符,且不克不及被设定。
要改正该毛病

  • 将变量的称号改成与Me分歧。

loop没有do
创立了一个Do轮回,但未准确地创建轮回。Do轮回以Do语句入手下手。上面演示了一个Do轮回的准确布局。
  1. [b]Do[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
  2. [[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b]
复制代码
大概可使用这个语法:
  1. [b]Do
  2. [/b][[i]statements[/i]]
  3. [[b]ExitDo[/b]]
  4. [[i]statements[/i]]
  5. [b]Loop[/b][{[b]While[/b]|[b]Until[/b]}[i]condition[/i]]
复制代码
要改正该毛病

  • 在不删除Loop语句的情形下大概试图删除一个Do把持布局。
  • 确保Do轮回包括了一切必需的部分。

有效exit语句
在以下程序把持布局之一中利用了Exit语句:

  • With语句。
  • If...Then...Else语句。
  • SelectCase语句。
仅在以下布局中能够正当利用Exit语句来加入:

  • Do...While轮回ExitDo)。
  • For...Next轮回ExitFor)。
  • ForEach...Next轮回ExitFor)。
  • Function历程(ExitFunction)。
  • Sub历程(ExitSub)。
要改正该毛病

  • 大概不得当地利用了ExitIfExitWith,或ExitSelect
  • 不要和IfWithSelect语句一同利用Exit

有效for轮回把持变量
创立了一个For...Next轮回。换句话说,大概在For...Next中利用了一个不法的把持变量。上面的代码演示了一个For...Next轮回的准确布局。
  1. [b]For[/b][i]counter[/i]=[i]start[/i][b]To[/b][i]end[/i][[b]Step[/b][i]step[/i]]
  2. [[i]statements[/i]]
  3. [[b]Exit[/b][b]For[/b]]
  4. [[i]statements[/i]]
  5. [b]Next[/b]
复制代码
要改正该毛病

  • 修正For...Next轮回的把持变量,使其在外轮回的局限内独一。

称号重界说
声了然一个在剧本其他中央已利用的称号。
要改正该毛病

  • 改动标识符称号使其在剧本的全局局限内独一。

必需为行的第一个语句
代码的多语句行包括了一个If...Then...Else语句,但If...Then...Else语句不是转业的第一个语句。If...Then...Else语句必需为行的第一个语句。
要改正该毛病

  • IfElse语句挪动到新的一行。

挪用Sub时不克不及利用圆括号
未利用Call挪用子程序,可是利用了圆括号()。当不利用Call语句挪用子程序时,不要利用圆括号。
要改正该毛病

  • 在挪用子程序的中央移往圆括号。
  • 改用Call语句挪用子程序。

必要笔墨常数
声明常数,可是付与其变更的表达式(能够变更的值)。常数不克不及包括运转时期码。
要改正该毛病

  • 当声明常数时不利用表达式。

必要In
创立一个ForEach...Next块,但在第一行未包含关头词In。上面演示了ForEach...Next块的准确布局。
  1. [b]ForEach[/b][i]element[/i][b]In[/b][i]group
  2.  [/i][[i]statements[/i]]
  3.  [[b]ExitFor[/b]]
  4.  [[i]statements[/i]]
  5. [b]Next[/b][[i]element[/i]]
复制代码
要改正该毛病

  • 确保ForEach...Next块包括了一切必需的部分。

必要Class
创立一个Class历程,可是以关头词End停止,而不是利用语句EndClass。一般利用EndClass语句停止Class历程。
<P>要改正该毛病

  • 利用EndClass语句停止Class历程。

必需在一个类的外部界说
创立了一个Property历程(PropertyLetPropertySet,或PropertyGet),可是在Class界说的内部举行了界说。只能在统一类内里创立Property历程。
<P>要改正该毛病

  • 确保一切的PropertyLetPropertySetPropertyGets在一个Class界说内里界说了。

在属性声明中必要Let或Set或Get
创立了一个PropertyLetPropertySet,或PropertyGet语句,但未包括关头词Let,Set,或GetProperty语句前面必需带LetSet,或Get
<P>要改正该毛病

  • 确保Property语句前面跟LetSet,或Get

必要Property
创立了一个Property历程(PropertyLet,PropertySet,PropertyGet),但未利用EndProperty语句停止历程。Property历程必需以EndProperty语句停止。
<P>要改正该毛病

  • 确保Property历程以EndProperty语句停止。

参数数量必需与属性申明分歧
所申明的参数数量太少了。当利用PropertyLetPropertySet,参数数量必需比响应的PropertyGet前往的数字年夜1。
<P>要改正该毛病

  • 确保PropertyLetPropertySet最少比由PropertyGet.前往的参数数量多1。

在类中不克不及有多个缺省的属性/办法
在类界说中标志了多于一个的缺省属性或办法。在类中只能有一个缺省的属性和办法。
<P>要改正该毛病

  • 确保该类只要一个缺省的属性和办法。

类初始化或停止不克不及带参数
类界说带有Class_Initialize事务或Class_Terminate事务。这些历程有一个或更多的参数。不要给这些历程指定参数。
<P>要改正该毛病

  • 从类界说中移往参数。

PropertySet或Let最少应当有一个参数
申明了一个没有参数的类的SetLet句柄的会见者。
<P>要改正该毛病

  • 增添一个参数给属性会见者。

不必要Next
创立了一个For...Next大概ForEach...Next机关,但没有包括For语句。比方,在试图往失落For...Next机关时保存了Next语句。上面演示了For...Next机关的准确用法。
  1. [b]For[/b][i]counter[/i][b]=[/b][i]start[/i][b]To[/b][i]end[/i][[b]Step[/b][i]step[/i]]
  2. [[i]statements[/i]]
  3. [[b]ExitFor[/b]]
  4. [[i]statements[/i]]
  5. [b]Next[/b]
复制代码
<P>要改正该毛病

  • 加上For语句(轮回把持语句)。
  • 往失落过剩的Next语句。

只能在PropertyGet中指定Default
PropertyLetPropertySet利用了保存字Default。只能对PropertyGet指定保存字Default
<P>要改正该毛病

  • 只对PropertyGet指定保存字Default
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-18 17:56:55 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
不帅 该用户已被删除
板凳
发表于 2015-1-22 19:54:23 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
精灵巫婆 该用户已被删除
地板
发表于 2015-1-31 11:18:12 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
透明 该用户已被删除
5#
发表于 2015-2-6 19:09:01 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
海妖 该用户已被删除
6#
发表于 2015-2-18 08:58:26 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
老尸 该用户已被删除
7#
发表于 2015-3-6 03:29:44 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
爱飞 该用户已被删除
8#
发表于 2015-3-12 19:46:14 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
只想知道 该用户已被删除
9#
发表于 2015-3-20 02:20:15 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-9 01:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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