哪位大侠帮我改改代码吧

chaylenliu 2008-07-10 03:40:55
代码写的太烂了,内存都满了,求求哪位大侠帮我改改吧
就是下面的代码,读“1,2,0,23,Ba”这个数据放在不同的变量里,先谢过了
===========================================================================
TUint16 table(0);
TInt n(0);
TInt aId(0);
TInt aPrice(0);
TBuf<30> aName;
aName.Zero();


TBuf16 <50> iDes;
iDes = _L("1,2,0,23,Ba,");

TLex lex(iDes);

TLex iLexs(_L(""));

//HBufC16* copy;
TChar ch(',');
TInt iDouNum(0);
TBuf16 <50> result;
result.Zero();

while(ETrue)
{
if(lex.Peek() == ch )
{
iDouNum++;
lex.Inc();
lex.Mark();
result.Zero();
}
else
{
if(iDouNum==0)
{
lex.Mark();
}
else
{
TPtrC item = lex.MarkedToken();
result.Append(item);

if(lex.Peek() == 0)
{
break;
}
else
{
lex.Inc();
lex.Mark();
}
}
}
iLexs = result;

if (iDouNum <2 )
{
switch(iDouNum)
{
case 0:
iLex.Val(table);
break;
case 1:
iLexs.Val(n);
break;
default:
break;
}
}
else if (iDouNum > 1)
{
switch(iDouNum%3)
{
case 2:
iLexs.Val(aId);
break;
case 0:
iLexs.Val(aPrice);
break;
case 1:
aName.Zero();
aName.Append(result);
break;
default:
break;
}
}
}
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
puddings 2008-07-10
  • 打赏
  • 举报
回复
TUint16  table(0); 
TInt n(0);
TInt id(0);
TInt price(0);
TBuf<30> name;

_LIT(KRecord, "1,2,0,23,Ba");

TLex lex(KRecord);
TLex lexForToken;
TChar ch;
TBuf<30> token;
TInt i(0);
while((ch = lex.Get()) != 0 )
{
while ((ch=lex.Peek()) != ',' && (ch = lex.Peek()) != 0)
lex.Inc();

lexForToken=lex.MarkedToken();
switch(i)
{
case 0:
lexForToken.Val(table,EDecimal);
break;
case 1:
lexForToken.Val(n);
break;
case 2:
lexForToken.Val(id);
break;
case 3:
lexForToken.Val(price);
break;
case 4:
name=lex.MarkedToken();
break;
default:
break;
}
i++;
lex.Inc();
lex.Mark();
}
dyw 2008-07-10
  • 打赏
  • 举报
回复
草拟代码,供参考:
TInt len = 0;
TInt nDouNum = 0;
const TDesC& data = ...; //
while (ETrue)
{
TPtrC ptr = data.Mid(len);
TInt pos = ptr.Find(',');
if (pos == KErrNotFound) break;
if (nDouNum == 0)
{
// parse as number
TInt num0;
TLex lex(ptr.Mid(0, pos));
if (lex.Val(num0) == KErrNone)
{
// do with num0
}
}
else if (nDouNum == 1)
{
...
}

len += pos; //
++len; // skip ,
++ nDouNum; //
}
btsy2000 2008-07-10
  • 打赏
  • 举报
回复
按“,”分割就可以了,也可一看看VC里面scanf得用法

3,120

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧