有時候我們寫qq類的程序的時候,需要獲取某qq用戶的qq暱稱,那麼如何編寫一個獲取qq暱稱的易語言程序呢?
下面小編分享下代碼寫法及代碼分析。
ps:本人小菜,大牛看到請不要噴,只是分享思路讓和我一樣的菜鳥有個學習的過程。如有錯誤或者建議歡迎評論經驗。
工具/原料
易語言
方法/步驟
此經驗因為騰訊的原因,可能已經失效.
打開易語言,新建一個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":";});
上面的內容,其中"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讀文件 (“ + 編輯框1.內容))
m = 尋找文本 (name, “nickname”, , 真)
.如果 (m = -1)
編輯框2.內容 = “無法獲取qq暱稱”
.否則
n = 尋找文本 (name, “,”, m, 真)
編輯框2.內容 = 子文本替換 (到文本 (編碼轉換 (到字節集 (取文本中間 (name, m + 10, n - m - 10)), #編碼_UTF_8, #編碼_GB18030, )), #引號, 取空白文本 (0), , , 真)
.如果結束