symbian TRAP(r, rdsIniFile.ReadL(buf)); 异常退出

sanjiaomao 2010-04-24 02:13:09
我在做读写INI文件的例子

TBool CMD5testAppUi::ReadIniFile(TUid info, void *ptr, TUint &size)
{
TInt r;
TBool result = EFalse;
RFs fs;
fs.Connect();
CleanupClosePushL(fs);
RDictionaryReadStream rdsIniFile;
CDictionaryStore *cdIniFile = Application()->OpenIniFileLC(fs);
if (cdIniFile->IsPresentL(info))
{
rdsIniFile.OpenLC(*cdIniFile, info);
TPtr8 buf((TUint8*) ptr, size);
TRAP(r, rdsIniFile.ReadL(buf));

CleanupStack::PopAndDestroy(); // rdsIniFile
result = ETrue;
}
CleanupStack::PopAndDestroy(2); // fs, cdIniFile
return result;

}

我在用时:
TUint aInd = 34;
TUid testuid =
{
0x0bdf1366
};
HBufC8* str;

ReadIniFile(testuid,str,aInd);
当执行到TRAP(r, rdsIniFile.ReadL(buf));时出现异常:PANIC KERN-EXEC 3

请教高手,这是怎么回事啊,是不是buf的问题
...全文
255 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Atoric 2010-04-27
  • 打赏
  • 举报
回复
void CIniFileEngine::ConstructL()
{
User::LeaveIfError(iFs.Connect());

iDicStore = CEikonEnv::Static()->EikAppUi()->Application()->OpenIniFileL(iFs);
}

void CIniFileEngine::WriteIniFileL(TUid aUid, const TDesC& aWriteBuffer)
{
RDictionaryWriteStream writeStream;

writeStream.AssignLC(*iDicStore, aUid);
writeStream << aWriteBuffer;
writeStream.CommitL();
CleanupStack::PopAndDestroy(); // writeStream

iDicStore->CommitL();
}

TBool CIniFileEngine::ReadIniFileL(TUid aUid, TDes& aReadBuffer)
{
TBool ret = EFalse;

if (iDicStore->IsPresentL(aUid))
{
RDictionaryReadStream readStream;

readStream.OpenLC(*iDicStore, aUid);
readStream >> aReadBuffer;
CleanupStack::PopAndDestroy(); // readStream
ret = ETrue;
}

return ret;
}
zhaopeng3 2010-04-26
  • 打赏
  • 举报
回复
是否满足条件if (cdIniFile->IsPresentL(info))
sanjiaomao 2010-04-26
  • 打赏
  • 举报
回复
TUint aInd = 34;
TUid testuid =
{
0x0bdf1366
};

HBufC8* str=HBufC8::NewLC(34);

CleanupStack::Pop();

ReadIniFile(testuid,str,aInd);
我刚给str分配了空间,可是在调用时,
现在能读,运行TBool CMD5testAppUi::ReadIniFile(TUid info, void *ptr, TUint &size)
中的CleanupStack::PopAndDestroy(2); // fs, cdIniFile出错,KERN EXEC 0
zhaopeng3 2010-04-26
  • 打赏
  • 举报
回复
1. 首先得到文件的大小size
2. HBufC8* str = HBufC8::NewLC(size);
sanjiaomao 2010-04-26
  • 打赏
  • 举报
回复
多谢您的回答
请问我应该怎样初始化HBufC8* str;呢?

我觉得TBool CMD5testAppUi::ReadIniFile(TUid info, void *ptr, TUint &size)
这个函数读出的ini文件应该被保存在 ptr,我的理解对吗?
我要想获得INI内容,只要看ptr就可以了,对吗
请指教
dyw 2010-04-25
  • 打赏
  • 举报
回复
HBufC8* str; // 没有初始化?从而导致指针错误...

另外,ReadIniFile的函数原型可以改为
TBool CMD5testAppUi::ReadIniFile(TUid info, TDes8& aDes);

Symbian字符串描述符本身就包含buffer长度。
内容概要:本文围绕通过短时倒谱(Cepstrogram)计算进行时-倒频分析的研究,提出了一种基于Matlab的信号处理方法,旨在从复杂信号中提取时变的倒频域特征,尤其适用于具有非线性反馈的LTI系统识别。文中系统阐述了短时倒谱的理论基础、计算流程与实现机制,并结合Simulink与Matlab代码实现了多个典型应用案例,涵盖非线性系统辨识、路径损耗建模、信号去噪与增强等,充分展示了该方法在系统建模与信号分析中的强大能力。研究不仅提供了完整的算法实现方案,还深入探讨了其在科研与工程实践中的广泛应用前景。; 适合人群:具备扎实的信号处理理论基础与Matlab编程能力,从事自动化、通信工程、电子工程、控制科学等领域的高校研究生、科研人员及工程技术人员。; 使用场景及目标:①实现对具有非线性反馈的LTI系统的精确建模与参数辨识,提升系统识别的准确性与鲁棒性;②在强噪声背景下进行有效的信号特征提取与时-倒频域分析,恢复信号的有效成分;③作为高级信号处理的教学与科研平台,帮助深入理解倒谱分析的物理意义及其在现代工程中的实际应用。; 阅读建议:建议读者在学习过程中紧密结合文中提供的Matlab代码与Simulink模型进行动手实践,通过调整参数、修改输入信号等方式观察分析结果的变化,以加深对算法机理的理解;同时可访问作者提供的网盘资源与完整代码包,系统性地掌握相关技术的优化与拓展方法。

3,119

社区成员

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

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