m_Source是对话框控件对应的变量,Cstring类型
我的目的是1.打开.dat文件 2.随机产生一系列的数,两种方法都能把结果放入m_Source在对话框上显示出来。
打开文件:void CAppZxyDlg::OnOpen()
随机产生:void CAppZxyDlg::OnRandom()数据放在CAppZxyDlg的public:int buffer[256]内显示时候调用void CAppZxyDlg::Display(DWORD BufferLength) //BufferLength是数列的长度现在的结果:打开文件没有问题,但是随机怎么都不对。OnRandom得到了buffer,但是display()在memcpy那里无法copy过去!这是怎么回事?void CAppZxyDlg::OnOpen()
{
UpdateData(TRUE); CString FN;
//char FileName[200];
char BASED_CODE szFilter[] ="源文件(*.dat)|*.dat|";
CFileDialog SrcFile(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
szFilter,NULL);
if(SrcFile.DoModal()==IDOK)
{
FN = SrcFile.GetPathName();
m_FileSrc = FN;
UpdateData(FALSE);
}
else
return;
CFile sourceFile;
CFileException e;
if (!sourceFile.Open(FN,
CFile::modeRead | CFile::shareDenyWrite, &e))
{
TCHAR szError[1024];
e.GetErrorMessage(szError, 1024);
MessageBox("Open file failed");
MessageBox(szError);
return;
} DWORD nBytes = sourceFile.GetLength();
sourceFile.ReadHuge(Buffer,nBytes);
Display(nBytes);
BytesTransfer = nBytes;
return;
}void CAppZxyDlg::OnRandom()
{
unsigned long RandomLength = 256;
for(int i = 0;i < (int)RandomLength;i++)
{
Buffer[i] = rand()*10/32767;
}
Buffer[RandomLength - 1] = '\0';
Display(RandomLength);
BytesTransfer = RandomLength;
}
void CAppZxyDlg::Display(DWORD BufferLength)
{ m_Source.Empty();
m_Receive.Empty();
UpdateData(TRUE);
memcpy(m_Source.GetBuffer(BufferLength),Buffer,BufferLength);
//strcpy(m_Source.GetBuffer(BufferLength),Buffer);
//strcat(Buffer,'\0');
//strcpy((char*)m_Source.GetBuffer(BufferLength),Buffer);
//SetDlgItemText(IDC_SOURCE,Buffer);
UpdateData(FALSE);
m_Source.ReleaseBuffer();
}
我的目的是1.打开.dat文件 2.随机产生一系列的数,两种方法都能把结果放入m_Source在对话框上显示出来。
打开文件:void CAppZxyDlg::OnOpen()
随机产生:void CAppZxyDlg::OnRandom()数据放在CAppZxyDlg的public:int buffer[256]内显示时候调用void CAppZxyDlg::Display(DWORD BufferLength) //BufferLength是数列的长度现在的结果:打开文件没有问题,但是随机怎么都不对。OnRandom得到了buffer,但是display()在memcpy那里无法copy过去!这是怎么回事?void CAppZxyDlg::OnOpen()
{
UpdateData(TRUE); CString FN;
//char FileName[200];
char BASED_CODE szFilter[] ="源文件(*.dat)|*.dat|";
CFileDialog SrcFile(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
szFilter,NULL);
if(SrcFile.DoModal()==IDOK)
{
FN = SrcFile.GetPathName();
m_FileSrc = FN;
UpdateData(FALSE);
}
else
return;
CFile sourceFile;
CFileException e;
if (!sourceFile.Open(FN,
CFile::modeRead | CFile::shareDenyWrite, &e))
{
TCHAR szError[1024];
e.GetErrorMessage(szError, 1024);
MessageBox("Open file failed");
MessageBox(szError);
return;
} DWORD nBytes = sourceFile.GetLength();
sourceFile.ReadHuge(Buffer,nBytes);
Display(nBytes);
BytesTransfer = nBytes;
return;
}void CAppZxyDlg::OnRandom()
{
unsigned long RandomLength = 256;
for(int i = 0;i < (int)RandomLength;i++)
{
Buffer[i] = rand()*10/32767;
}
Buffer[RandomLength - 1] = '\0';
Display(RandomLength);
BytesTransfer = RandomLength;
}
void CAppZxyDlg::Display(DWORD BufferLength)
{ m_Source.Empty();
m_Receive.Empty();
UpdateData(TRUE);
memcpy(m_Source.GetBuffer(BufferLength),Buffer,BufferLength);
//strcpy(m_Source.GetBuffer(BufferLength),Buffer);
//strcat(Buffer,'\0');
//strcpy((char*)m_Source.GetBuffer(BufferLength),Buffer);
//SetDlgItemText(IDC_SOURCE,Buffer);
UpdateData(FALSE);
m_Source.ReleaseBuffer();
}
解决方案 »
- 想制作一个棋牌类游戏,需要哪些知识!!
- MFC 怎么让199 和210 约等于
- 想把程序这部分改成多线程,不知道怎么个改法
- 什么消息映射...通用消息控件 和 DDX/DDV必须会吗?
- 这样使用CArray有问题吗?
- 我这段代码出什么错了?怎么也显示不了图片!急死我了:(在线等(关于CListCtrl)
- vc中如何读取ini文件,或者xml里面的元素? 只是为了方便修改程序中控件的位置、颜色等值。
- windows编程中SendMessage与postMessage的区别是什么!!
- 问一下doxygen这个软件是干什么用的?有谁知道吗?
- MFC堆栈损坏出错
- vc如何用sys用户以sysdba身份登陆oracle9i数据库??
- 出现了'class' type redefinition错误,救命呀。
2 有可能你得到的随即机数都是非可见字符。
Good Luck!
OnRandom运行后,Buffer已经有了数值。0,5,1,8.....
试过了在Buffer最后+上'\0'终止符
试过修改类型。char,Cstring....
试过用strcpy和strcat
试过不用m_Source,直接在Buffer和IDC_SOURCE控件之间我觉得什么好像都试过了,就是不行。唉