易语言怎么让QQ昵称显示在标签上?

如题
2025-01-05 07:09:17
推荐回答(1个)
回答1:

打开易语言,新建一个Windows窗口程序,如图所示,添加2个标签,2个编辑框和一个按钮。

标签1命名为QQ,标签2命名为昵称,编辑框1用来输入QQ号码,编辑框2则用来接收获取到的QQ昵称。按钮命名为”获取昵称“。这里我编辑框1输入的qq为10001。

我们双击 按钮,进入代码编写,这时候自动为我们创建了“_按钮1_被单击”子程序。

添加三个变量,一个文本型 两个整数型,这里文本型我写的是 name 两个整数型写的是m和n,具体大家自己命名。

我们先写上这行代码。
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来接收用户输入自定义的QQ

http读文件就是读取网页的数据文件,可以理解为源码。我们访问
”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"});

上面的内容,其中"nickname":"pony",这一行中的pony就是QQ昵称。

可是我们要怎么取出其中的qq昵称呢?

我们可以用 取文本中间这条命令来获取。
再写上下面的代码。

m = 寻找文本 (name, “nickname”, , 真)
我们寻找nickname 看他首先出现的位置,把位置赋给m

再用如果命令来判断 寻找文本的返回结果 如果等于-1说明没有找到 我们也就没有继续的必要。
如果 (m = -1)
如果不等于=-1就是说明存在

再在如果命令的另一分支(否则的条件时)下写上代码

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个。

由于涉及到网页编码问题,所以我们这里还需要转换下编码。

编码转换 (到字节集 (取文本中间 (name, m + 10, n - m - 10)), #编码_UTF_8, #编码_GB18030, )

再把转换过后的结果转换文本 以便用于后面的子文本替换
到文本 (编码转换 (到字节集 (取文本中间 (name, m + 10, n - m - 10)), #编码_UTF_8, #编码_GB18030, ))
这时候的文本是"pony"
再用子文本替换命令 把左右两边的引号替换为空白即可。

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

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

.版本 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), , , 真)

.如果结束

END
注意事项
编码转换那里和取文本中间 (name, m + 10, n - m - 10) 这里注意m和n的位置和要取网名的字符数
我觉得学习就是这样,把每一步都搞懂,不像有的人发经验很多细节不写清楚,造成很多新手看不懂。如有错误或建议欢迎指出。
如果觉得写的不错,可以点击下面的投票和五角星或者右边的分享哦。你的肯定就是我们最大的动力。