联系人数据库格式

lua-users home
wiki

用于转储记录以供检查的 Lua 代码
-- contacts.lua                                                                                    

-- number of header bytes before the first field
skip = 17

f,n = io.open("db:/ContactsDB-PAdd", "r")

-- just look at one specific record, to make things simpler for investigation
for i = 1,1 do
  print("start")

  -- open the record and get the record length
  l = f:openrec(i)
  if not(l == nil) then
    -- read header
    s = f:read(skip)
    print(string.byte(s, 1))
    print(string.byte(s, 2))
    print(string.byte(s, 3))
    print(string.byte(s, 4))
    print(string.byte(s, 5))
    print(string.byte(s, 6))
    print(string.byte(s, 7))
    print(string.byte(s, 8))
    print(string.byte(s, 9))
    print(string.byte(s, 10))
    print(string.byte(s, 11))
    print(string.byte(s, 12))
    print(string.byte(s, 13))
    print(string.byte(s, 14))
    print(string.byte(s, 15))
    print(string.byte(s, 16))
    print(string.byte(s, 17))    
    print("fields")
    -- read fields in remaining record after header
    s = f:read(l-skip)
    -- fields are all nul-terminated ASCII.  Get them.
    -- This fixed string should be replaced with one that contains 1 S for each field in the header
    t = bin.unpack( "SSSSSSSSSSSSSSSSSSSSS", s)
    -- There seems to be some other byte information after the fields, at least in some cases.
    -- No idea currently what that contains.
    table.foreach(t, print)
  end
  f:closerec()
end
f:close()

头字节(Lau 兼容的 1 基偏移量)

电话标签

每个标签有 4 位,包含一个数字,用于指示要使用的标签:0 代表工作,1 代表家庭,2 代表传真,3 代表其他,4 代表电子邮件,5 代表主要,6 代表寻呼机,7 代表手机。要读取标签,请使用“floor(byte / 16)”获取高位标签,使用“byte - (byte / 16)”获取低位标签。要写入标签,请使用“byte = lower + upper * 16”。

地址标签

每个标签有 4 位,包含一个数字,指示使用哪个标签:0 代表工作,1 代表家庭,2 代表其他。像读取和写入电话标签一样读取和写入这些标签。

IM 标签

每个标签有 4 位,包含一个数字,指示使用哪个标签:0 代表 IM,1 代表 AIM,2 代表 MSN,3 代表 Yahoo,4 代表 AOL ICQ。像读取和写入电话标签一样读取和写入这些标签。

以上内容已在 [HB++ 社区论坛] 中确认。


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2007 年 10 月 23 日下午 9:58 GMT (差异)