【题目】
编写一个函数,实现SayString相似功能的函数,只要能够输入英文即可
【考官答案评价】
无法区分大小写,且给出代码调用无法直接输出字符(扣24分)
【本人当时答案】
Function likeSayString(key)
Dim MyString
MyString = Split(key, "")
For i = 0 To UBound(MyString)
TracePrint UBound(MyString)
KeyPress MyString(i), 1
Delay 200
TracePrint i
TracePrint MyString(i)
Next
End Function
【你的参与】以评论(或写简书短文)指出可能有的错误,多多益善。
【自我反思】
提交答案之前,只是根据traceprint的结果才确定的。发现审核结果之后,发觉自己只是依据traceprint命令的结果,没有加以完善地测试。于是就使用下列代码进行实际测试,验证一下考官的结论是否正确。
RunApp "notepad"
Delay 1000 //这行还是测试几次后才加的,延时是很重要的初级手段(因为简单,所以也易遗忘)
//稍高级一点的,可以用窗口标题查询窗口句柄,如有再继续操作。
Call likeSayString("We enjoy life")
【提示】
RunApp "notepad"
Delay 200 //Delay 延时一段(以毫秒为单位)特定的时间后,再执行后面的命令。
一般在中间加上200毫秒的延时是比较合适的(具体数值以测试结果为准)
KeyPress "A", 1
KeyPress "a", 1
猜想一下结果是什么,然后自己测试一下。你能得出什么结论呢?写下来,加深印象!
对,你的猜想没错,keypress(“按键”)后有效的字符或字符串,不区分大小写。
keypress要点如下:
(1)按键码参数支持字符类型,每次只能按一个键。
(2)按键码可以是纯数字或者是键盘某个键的字符或者字符串。
但字符串必须与键盘上的按键码一致。例如[A]、[B]、[c]、[shift]、[Alt]、[Ctrl]等等。
如果是不存在字符串,例如ABCD,执行时则不会有任何效果。
(3)如果按键码的参数值不是一个存在的按键码值,运行时也没有任何效果。
(4)按键码只表示键盘按键的值,不能直接按出"@"这类符号。
——以上引用自《零基础学按键精灵》(2012年8月第一版)
【思路总结】
思路1——《文本拆分拼接法》
把要输入的文本,拆分成一个个字符,再一个个输入,要注意大小写。
思路2——《文本复制粘贴法》
把要输入的文本,直接复制到剪贴板上,再用粘贴的形式,输入文本。
【反思总结】
代码的测试——不能只看traceprint的结果,更要看实际调用的结果。
延时——及时添加,之后要换稍高级的手法
命令相关说明——官方文档好渣,最好自己建个完善的。(就比如keypress,竟然没说明,不区分大小写!我擦!)
教程——不要光看官方网站上简陋的教程,还要看官方出版卖钱的教程书(教材)。