GetOpenFileName
Код:
Unhandled exception at 0x004f52fb in Klient2.exe: 0xC0000005: Access violation reading location 0xfffffff4
Вот мой код:
Код:
void CKlient2Dlg::OnBnClickedButton4()
{
ZeroMemory(&m_text2, sizeof(m_text2));
int i;
OPENFILENAME put;
HWND hwnd=GetSafeHwnd(); // окно - владелец
ZeroMemory(&put, sizeof(put));
put.lStructSize=sizeof(put);
put.hwndOwner=hwnd;
put.lpstrFile=szFile;
put.nMaxFile = sizeof(szFile);
put.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
put.nFilterIndex = 1;
put.lpstrFileTitle = NULL;
put.nMaxFileTitle = 0;
put.lpstrInitialDir = NULL;
put.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&put);
//m_text2.Format(_T("%s"), szFile);
//m_text2=szFile;
//m_text2=(CString)put.lpstrFile;
for(i=0;i<260;i++)
m_text2=m_text2+szFile;// здесь вылетает ошибка
UpdateData(FALSE);
}
{
ZeroMemory(&m_text2, sizeof(m_text2));
int i;
OPENFILENAME put;
HWND hwnd=GetSafeHwnd(); // окно - владелец
ZeroMemory(&put, sizeof(put));
put.lStructSize=sizeof(put);
put.hwndOwner=hwnd;
put.lpstrFile=szFile;
put.nMaxFile = sizeof(szFile);
put.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
put.nFilterIndex = 1;
put.lpstrFileTitle = NULL;
put.nMaxFileTitle = 0;
put.lpstrInitialDir = NULL;
put.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&put);
//m_text2.Format(_T("%s"), szFile);
//m_text2=szFile;
//m_text2=(CString)put.lpstrFile;
for(i=0;i<260;i++)
m_text2=m_text2+szFile;// здесь вылетает ошибка
UpdateData(FALSE);
}
Вот так объявляется буфер
Код:
char szFile[260];
Помогите пожалуйста.Я уже всё перепробовал
Цитата:
for(i=0;i<260;i++)
m_text2=m_text2+szFile;// здесь вылетает ошибка
m_text2=m_text2+szFile;// здесь вылетает ошибка
Почитайте про работу со строками как с массивами.
Код:
strcpy(m_text2, szFile);
Код:
char rt;
rt=szFile[0];
rt=szFile[0];
выдаёт системную ошибку Debug Assertion Failed во время исполнения строки присваивания
Что такое m_text2 ?
Вот это
Код:
ZeroMemory(&m_text2, sizeof(m_text2));
вместе с вот этим
Код:
m_text2=m_text2+szFile;
выглядит крайне странно
Цитата: Karpo
А теперь не работает(как и Ваш).
После такого
Код:
ZeroMemory(&m_text2, sizeof(m_text2));
это работать не будет:
Код:
strcpy(m_text2, szFile);
Присоединяюсь к совету SergPas, разберись с C-string.
Код:
ZeroMemory(&m_text2, sizeof(m_text2));
Убрал её и мой вариант
Код:
for(i=0;i<260;i++)
m_text2=m_text2+szFile;
m_text2=m_text2+szFile;
Заработал,а функция strcpy не работает,так как у неё первый параметр char*,и Cstring'у там не место.
Ещё раз спасибо.