多语言展示
当前在线:368今日阅读:84今日分享:32

易语言如何编写获取qq昵称程序?

有时候我们写qq类的程序的时候,需要获取某qq用户的qq昵称,那么如何编写一个获取qq昵称的易语言程序呢?下面小编分享下代码写法及代码分析。ps:本人小菜,大牛看到请不要喷,只是分享思路让和我一样的菜鸟有个学习的过程。如有错误或者建议欢迎评论经验。
工具/原料

易语言

方法/步骤
1

此经验因为腾讯的原因,可能已经失效.目前可以通过: 图片框1.图片 = HTTP读文件 (“http://q2.qlogo.cn/headimg_dl?bs=” + qqNumber + “&dst_uin=” + qqNumber + “&src_uin=” + qqNumber + “&fid=” + qqNumber + “&spec=100&url_enc=0&referer=bu_interface&term_type=PC”)这种方式来获取, 把qqNumber换成QQ号即可!打开易语言,新建一个Windows窗口程序,如图所示,添加2个标签,2个编辑框和一个按钮。标签1命名为QQ,标签2命名为昵称,编辑框1用来输入QQ号码,编辑框2则用来接收获取到的QQ昵称。按钮命名为”获取昵称“。这里我编辑框1输入的qq为10001。

2

我们双击 按钮,进入代码编写,这时候自动为我们创建了“_按钮1_被单击”子程序。添加三个变量,一个文本型 两个整数型,这里文本型我写的是 name 两个整数型写的是m和n,具体大家自己命名。

3

我们先写上这行代码。name = 到文本 (HTTP读文件 (“http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=” + 编辑框1.内容))”http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=10001“这个网址的uin=后面就是你要获取昵称的QQ号码。而这里我们用编辑框1来接收用户输入自定义的QQhttp读文件就是读取网页的数据文件,可以理解为源码。我们访问”http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=10001“ 可以看到_Callback({'uin':10001,'qzone':0,'intimacyScore':0,'nickname':'pony','realname':'','smartname':'','friendship':0,'isFriend':0,'bitmap':'1a51d5c4082ed301','avatarUrl':'http://qlogo2.store.qq.com/qzone/10001/10001/100'});

4

上面的内容,其中'nickname':'pony',这一行中的pony就是QQ昵称。可是我们要怎么取出其中的qq昵称呢?我们可以用 取文本中间这条命令来获取。再写上下面的代码。m = 寻找文本 (name, “nickname”, , 真)我们寻找nickname 看他首先出现的位置,把位置赋给m再用如果命令来判断 寻找文本的返回结果  如果等于-1说明没有找到 我们也就没有继续的必要。如果 (m = -1)如果不等于=-1就是说明存在

5

再在如果命令的另一分支(否则的条件时)下写上代码n = 寻找文本 (name, “,”, m, 真)这条代码的意思就是从m所在位置开始寻找最先出来的“,”也就是'nickname':'pony',最后面的“,”符号找到位置后再赋值给n然后再用 取文本中间 (name, m + 10, n - m - 10取文本中间命令来取出 n和m之间的内容(这个内容就是网名所在的位置并占的字符数)从m加10的地方也就是 网名所在那一行,要取的长度就是写为n-m-10。为什么m要加10呢? 我们来看 'nickname':'pony', 和取文本中间的命令用法。   调用格式: 〈文本型〉 取文本中间 (文本型 欲取其部分的文本,整数型 起始取出位置,整数型 欲取出字符的数目) - 系统核心支持库->文本操作    英文名称:mid    返回一个文本,其中包含指定文本中从指定位置算起指定数量的字符。本命令为初级命令。    参数<1>的名称为“欲取其部分的文本”,类型为“文本型(text)”。    参数<2>的名称为“起始取出位置”,类型为“整数型(int)”。1为首位置,2为第2个位置,如此类推。    参数<3>的名称为“欲取出字符的数目”,类型为“整数型(int)”。”起始取出位置“就是 m变量 最先出现的位置,最新出现的位置什么意思?就是nickanme的首字母n的位置而不要误解为最后字母e的位置,加上10就是定位的网名所在位置前面的那个引号那里。后面的n-m-10 就是要取出的字符数目了,由于之前m加了10所以这里再减去 不然取出的字符数会多10个。

6

由于涉及到网页编码问题,所以我们这里还需要转换下编码。编码转换 (到字节集 (取文本中间 (name, m + 10, n - m - 10)), #编码_UTF_8, #编码_GB18030, )再把转换过后的结果转换文本  以便用于后面的子文本替换到文本 (编码转换 (到字节集 (取文本中间 (name, m + 10, n - m - 10)), #编码_UTF_8, #编码_GB18030, ))这时候的文本是'pony'

7

再用子文本替换命令 把左右两边的引号替换为空白即可。子文本替换 (到文本 (编码转换 (到字节集 (取文本中间 (name, m + 10, n - m - 10)), #编码_UTF_8, #编码_GB18030, )), #引号, 取空白文本 (0), , , 真)

8

再赋值给编辑框2.内容即可编辑框2.内容 = 子文本替换 (到文本 (编码转换 (到字节集 (取文本中间 (name, m + 10, n - m - 10), #编码_UTF_8, #编码_GB18030, )), #引号, 取空白文本 (0), , , 真)

9

最终结果.版本 2.程序集 窗口程序集1.子程序 _按钮1_被单击.局部变量 name, 文本型.局部变量 m, 整数型.局部变量 n, 整数型name = 到文本 (HTTP读文件 (“http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=” + 编辑框1.内容))m = 寻找文本 (name, “nickname”, , 真).如果 (m = -1)    编辑框2.内容 = “无法获取qq昵称”.否则    n = 寻找文本 (name, “,”, m, 真)    编辑框2.内容 = 子文本替换 (到文本 (编码转换 (到字节集 (取文本中间 (name, m + 10, n - m - 10)), #编码_UTF_8, #编码_GB18030, )), #引号, 取空白文本 (0), , , 真).如果结束

注意事项
1

编码转换那里和取文本中间 (name, m + 10, n - m - 10) 这里注意m和n的位置和要取网名的字符数

2

我觉得学习就是这样,把每一步都搞懂,不像有的人发经验很多细节不写清楚,造成很多新手看不懂。如有错误或建议欢迎指出。

3

如果觉得写的不错,可以点击下面的投票和五角星或者右边的分享哦。你的肯定就是我们最大的动力。

推荐信息