欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

vcard解析与打包

更新时间: 2014-01-05 02:48:55 责任编辑: Author_N1

 

vcard解析与打包求助?
想实现以下功能:自己定义一个结构体:
typedef struct
{
unsigned short szName[30];//姓名
unsigned short szNickName[30];//昵称
unsigned short szMoB[40];//手机
unsigned short szMoB_HOME[40];//手机(家庭)
。。。。。。。。。//共20项
};
能把这个结构体打包成vcard,能从vcard中解出这个结构体//20项字段
vcard我没接触过,要求汉字是用UTF_8解析的,求c++/MFC代码,80718901@qq.com,万分感谢,270分全部送上,另开一帖在:
http://topic.csdn.net/u/20100717/16/79f5db5f-c873-4673-a85c-4cdd36c1eafc.html?seed=1303330889&r=67048502#r_67048502
另开一帖在http://topic.csdn.net/u/20100717/21/073314c6-0341-4a53-8c3e-7ba0f6138861.html
最简单的我也知道是自己一个一个按定义写结构体到vcard中,那么在取vcard流时,vcard流用unicode或多字节保存会有什么影响吗??

--参考方法--
有一段JAVA的 , 上上来LZ自己揣摩一下吧
package org.mobiledream.safebox.function.card;

import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Vector;

import javax.microedition.pim.Contact;
import javax.microedition.pim.ContactList;
import javax.microedition.pim.PIM;
import javax.microedition.pim.PIMException;
import javax.microedition.pim.PIMItem;
import javax.microedition.pim.PIMList;

import org.mobiledream.safebox.function.frame.ContactListener;
import org.mobiledream.safebox.function.frame.VCardListener;


/**
 * 对电子名片的所有操作
 * @author Mobile Dream
 *
 */
public class VCard extends Thread{

/**
* 监听器
*/
private ContactListener c = null;

/**
* 监听器
*/
private VCardListener v = null;

/**
* 联系人
*/
private Vector contacts = null;

/**
* 是否停止
*/
boolean stop = false;

/**
* 构造
*
*/
public VCard() {
contacts = new Vector();
}

/**
* 设置监听器
* @param c
*/
public void setContactListener(ContactListener c) {
this.c = c;
}

/**
* 移出监听器
*
*/
public void removeContactListener() {
c = null;
}

/**
* 取得监听器
* @return
*/
public VCardListener getVCardListener() {
return v;
}

/**
* 移除监听器
* @param v
*/
public void setVCardListener(VCardListener v) {
this.v = v;
}

/**
* 多线程
*/
public void run() {
if(c == null) { // 没有监听器
return;
}

try {

// 打开电话本并获得列表
PIMList pimlist = (PIMList) PIM.getInstance().openPIMList(
PIM.CONTACT_LIST, PIM.READ_ONLY);

Card.init(pimlist); // 初始化

// 对联系人表进行清空
contacts = new Vector();

int counter = 1;

Enumeration enu = pimlist.items(); // 所有联系人

// 获得所有联系人
while (enu.hasMoreElements()) {
Card card = new Card((PIMItem) enu.nextElement());

contacts.addElement(card); // 装入向量保存

if(stop) { // 停止获取
contacts = null;
stop = false;
return;
}

c.contactAcquired(card, counter++); // 触发监听器
}

pimlist.close();
} catch (Exception e) {
contacts = null;
c.contactAcquireError(e); // 触发监听器
}

c.contactAcquireComplete(contacts); // 触发监听器
}

/**
* 将vcard串行化
* @param item
* @param ops
*/
public static void toSerialFormat(PIMItem item, ByteArrayOutputStream bops) {
try {
PIM.getInstance().toSerialFormat(item, bops, "UTF-8", "VCARD/2.1");
} catch (UnsupportedEncodingException e) {
// 不做处理
} catch (PIMException e) {
// 不做处理
}
}

/**
* 导入并提交修改
* @param items
* @throws PIMException
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:48:55
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/14779/
本文WWW.DOC100.NET DOC100.NET版权所有。