孙鑫 lesson12 File

本文介绍了如何使用C++进行文件的读写操作及注册表的读写操作。包括使用不同方法打开、读取和写入文件,以及创建、读取和修改注册表键值的具体实现。

写入、读取文件

写入、读取注册表

代码:

    在应用程序开始写入注册表的键值与获取注册表中值

       SetRegistryKey("AXXX");


/*::WriteProfileStringA("my application test","admin","XXX");
CString str;
::GetProfileStringA("my application test","admin","lisi",
str.GetBuffer(100),100);
AfxMessageBox(str);*/


/*WriteProfileString("my application test","admin","XXX");
CString str;
str=GetProfileString("my application test","admin");
AfxMessageBox(str);*/

写入文件

void CFileView::OnFilewrite()
{
// TODO: 在此添加命令处理程序代码
/*FILE *pFile=_wfopen(_T("1.txt"),_T("w"));
fwrite("bbbbb",1,strlen("bbbbb"),pFile);
fseek(pFile,0,SEEK_SET);
fwrite("XXX:",1,strlen("XXX:"),pFile);
//fclose(pFile);
//fflush(pFile);
fclose(pFile);*/


/*FILE *pFile=_wfopen(_T("2.txt"),_T("wb"));
wchar_t ch[3];
ch[0]='a';
ch[1]='10';
ch[2]='b';
fwrite(ch,1,3,pFile);
fclose(pFile);*/


/*
FILE *pFile=_wfopen(_T("3.txt"),_T("w"));
int i=98341;
wchar_t ch[10];
/*ch[0]=9+48;
ch[1]=8+48;
ch[2]=3+48;
ch[3]=4+48;
ch[4]=1+48;*/
//_itow(i,ch,10);
//fwrite(&i,4,1,pFile);
//fwrite(ch,1,10,pFile);
//fclose(pFile);


/*ofstream ofs(_T("4.txt"));
ofs.write("XXX",strlen("XXX"));
ofs.close();*/
/*HANDLE hFile;
hFile=CreateFile(_T("5.txt"),GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD dwWrites;
WriteFile(hFile,"aaaaaa",strlen("aaaaaa"),&dwWrites,NULL);
CloseHandle(hFile);*/


/*CFile file(_T("6.txt"),CFile::modeCreate |CFile::modeWrite);
file.Write("the sixth txt",strlen("the sixth txt"));
file.Close();*/


CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrTitle=_T("我的文件保存对话框");
fileDlg.m_ofn.lpstrFilter=_T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");
fileDlg.m_ofn.lpstrDefExt=_T("txt");
fileDlg.DoModal();
}



读取文件
void CFileView::OnFileread()
{
// TODO: 在此添加命令处理程序代码
//FILE *pFile=_wfopen(_T("1.txt"),_T("r"));
//wchar_t ch[100];
//memset(ch,0,100);
//fread(ch,1,100,pFile);
//MessageBox(ch);
/*wchar_t *pBuf;
fseek(pFile,0,SEEK_END);
int len=ftell(pFile);
pBuf= new wchar_t[len+1];
rewind(pFile);
fread(pBuf,1,len,pFile);
pBuf[len]=0;
MessageBox(pBuf);
fclose(pFile);*/


/*FILE *pFile=_wfopen(_T("2.txt"),_T("r"));
wchar_t ch[100];
fread(ch,1,3,pFile);
ch[3]=0;
MessageBox(ch);
fclose(pFile);*/


/*ifstream ifs("4.txt");
char ch[100];
memset(ch,0,100);
ifs.read(ch,100);
ifs.close();
MessageBox((LPTSTR)ch);*/


/*HANDLE hFile;
hFile=CreateFile(_T("5.txt"),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
char ch[100];
DWORD dwReads;
ReadFile(hFile,ch,100,&dwReads,NULL);
ch[dwReads]=0;
CloseHandle(hFile);
MessageBox((LPCTSTR)ch);*/


/*CFile file(_T("6.txt"),CFile::modeRead);
wchar_t *pBuf;
DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new wchar_t[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
MessageBox(pBuf);*/


CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle=_T("我的文件打开对话框");
fileDlg.m_ofn.lpstrFilter=_T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");

//fileDlg.m_ofn.lpstrDefExt=_T("txt");
if(IDOK==fileDlg.DoModal())
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);

wchar_t *pBuf;
   DWORD dwFileLen;
   dwFileLen=file.GetLength();
   pBuf=new wchar_t[dwFileLen+1];
   pBuf[dwFileLen]=0;
   file.Read(pBuf,dwFileLen);
   file.Close();
   MessageBox((LPCTSTR)pBuf);


/*CFile file(fileDlg.GetFileName(),CFile::modeRead);
char *pBuf;
DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
MessageBox((LPCTSTR)pBuf);*/
}
}



往注册表写入键值
void CFileView::OnRegWrite()
{
// TODO: 在此添加命令处理程序代码
HKEY hkey;
DWORD dwAge=30;
RegCreateKey(HKEY_CURRENT_USER,"Software\\AXXX\\admin2",&hkey);
RegSetValue(hkey,NULL,REG_SZ,"XXX2",strlen("XXX2"));
RegSetValueEx(hkey,"age",0,REG_DWORD,(const BYTE*)dwAge,4);
RegCloseKey(hkey);
}



从注册表读取键值
void CFileView::OnRegRead()
{
// TODO: 在此添加命令处理程序代码
/*LONG lValue;
RegQueryValue(HKEY_CURRENT_USER,"Software\\AXXX\\admin2",NULL,&lValue);
char *pBuf=new char[lValue];
RegQueryValue(HKEY_CURRENT_USER,"Software\\AXXX\\admin2",pBuf,&lValue);
MessageBox(pBuf);*/


HKEY hkey;
RegOpenKey(HKEY_CURRENT_USER,"Software\\AXXX\\admin2",&hkey);
DWORD dwType;
DWORD dwValue;
DWORD dwAge;
RegQueryValueEx(hkey,"age",0,&dwType,(LPBYTE)&dwAge,&dwValue);
CString str;
str.Format("age=%d",dwAge);
MessageBox(str);
}

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值