以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]openqq编号的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177056)

--  作者:昱飞哥
--  发布时间:2022/5/7 19:40:00
--  [求助]openqq编号的问题
请教一下,多张表要生成编号是不是要在服务端定义多个全局变量Public flbhs As New Dictionary(of String,Integer),还有这个QQClient.SendWait(":f" & bh & "f:"),这个f是什么意思,为什么要这样写
--  作者:狐狸爸爸
--  发布时间:2022/5/8 10:26:00
--  
服务端会收到很多信息,那么如何区分收到的这个信息是做什么的呢,怎么知道客户发来的信息是请求一个新的编号呢?

所以需要预先约定一个信息格式,这里约定":f"开头和"f:"结尾的信息,表示是一个编号信息。

服务端收到信息之后,进行判断,如果符合上述约定的信息格式,则知道客户要求一个新的编号,那段帮助的服务端代码是:

3、在服务端的OpenQQ服务端事件ReceivedMessage中编写代码:

Dim msg As String = e.Message
If
 msg.StartsWith(":f"AndAlso msg.EndsWith("f:"Then
    msg = msg.SubString(2, msg.Length - 4)
    If 
flbhs.ContainsKey(msg) Then \'如果存在这个类别的编号
        
flbhs(msg) = flbhs(msg) + 1 \'将该类别最大编号加1
    
Else
        
flbhs.Add(msg,1\'如果是这个列表的首次编号,则编号等于1
    
End If
    e.ReturnValue = flbhs(msg) 
\'将编号返回给客户端
End If


--  作者:昱飞哥
--  发布时间:2022/5/8 21:54:00
--  
一个表要生成自动编号这样写,那多个表要生成自动编号是不是要在服务端写多个Public ,用来存放不同表的编号整数部分?
public ids1 as new Dictionary
public ids2 as new Dictionary
...


--  作者:有点蓝
--  发布时间:2022/5/8 22:06:00
--  
可以一个,用表名+类别作为键即可。
--  作者:昱飞哥
--  发布时间:2022/5/9 11:36:00
--  
明白了,谢谢两位老师!