易語言如何編寫獲取qq暱稱程序??

有時候我們寫qq類的程序的時候,需要獲取某qq用戶的qq暱稱,那麼如何編寫一個獲取qq暱稱的易語言程序呢?

下面小編分享下代碼寫法及代碼分析。

ps:本人小菜,大牛看到請不要噴,只是分享思路讓和我一樣的菜鳥有個學習的過程。如有錯誤或者建議歡迎評論經驗。

工具/原料

易語言

方法/步驟

此經驗因為騰訊的原因,可能已經失效.

打開易語言,新建一個Windows窗口程序,如圖所示,添加2個標籤,2個編輯框和一個按鈕。

標籤1命名為QQ,標籤2命名為暱稱,編輯框1用來輸入QQ號碼,編輯框2則用來接收穫取到的QQ暱稱。按鈕命名為”獲取暱稱“。這裡我編輯框1輸入的qq為10001。

易語言如何編寫獲取qq暱稱程序?

我們雙擊 按鈕,進入代碼編寫,這時候自動為我們創建了“_按鈕1_被單擊”子程序。

添加三個變量,一個文本型 兩個整數型,這裡文本型我寫的是 name 兩個整數型寫的是m和n,具體大家自己命名。

易語言如何編寫獲取qq暱稱程序?

我們先寫上這行代碼。

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":";});

易語言如何編寫獲取qq暱稱程序?

上面的內容,其中"nickname":"pony",這一行中的pony就是QQ暱稱。

可是我們要怎麼取出其中的qq暱稱呢?

我們可以用 取文本中間這條命令來獲取。

再寫上下面的代碼。

m = 尋找文本 (name, “nickname”, , 真)

我們尋找nickname 看他首先出現的位置,把位置賦給m

再用如果命令來判斷 尋找文本的返回結果 如果等於-1說明沒有找到 我們也就沒有繼續的必要。

如果 (m = -1)

如果不等於=-1就是說明存在

易語言如何編寫獲取qq暱稱程序?

再在如果命令的另一分支(否則的條件時)下寫上代碼

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

易語言如何編寫獲取qq暱稱程序?

由於涉及到網頁編碼問題,所以我們這裡還需要轉換下編碼。

編碼轉換 (到字節集 (取文本中間 (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), , , 真)

.如果結束

易語言如何編寫獲取qq暱稱程序?

相關問題答案