Ошибка Edit'а
От: alilua-jah Россия  
Дата: 01.06.05 23:57
Оценка:
Существует форма, в ней Edit.

При открытии окна (OnShowWindow) говорю эдиту ограничивать ввод:
SendDlgItemMessage(IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L);

Ошибка вот в чем:
Если поставить значение больше 7 при наборе текста в эдит вылетает ошибка о недоступности памяти.

Работаю с эдитом так (вдруг неправильно) :
int EditLen = (int)SendDlgItemMessage(IDC_EDTLOGIN, EM_LINELENGTH, 0L, 0L);
char* lpszBuffer = new char[EditLen];
SendDlgItemMessage(IDC_EDTLOGIN, EM_GETLINE, 0L, (LPARAM)lpszBuffer);
if (userIni.strUserName != NULL)
ZeroMemory(userIni.strUserName, sizeof(userIni.strUserName));
if ((strlen(lpszBuffer)) > 0)
{
userIni.strUserName = new char[strlen(lpszBuffer)];
strcpy(userIni.strUserName, lpszBuffer);
}

Подскажите, почему может вылетать ошибка с памятью плиз.
... << RSDN@Home 1.1.3 stable >>
Re: Ошибка Edit'а
От: RMikola  
Дата: 02.06.05 00:44
Оценка:
Здравствуйте, alilua-jah, Вы писали:

AJ>Существует форма, в ней Edit.


AJ>При открытии окна (OnShowWindow) говорю эдиту ограничивать ввод:

AJ> SendDlgItemMessage(IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L);

AJ>Ошибка вот в чем:

AJ> Если поставить значение больше 7 при наборе текста в эдит вылетает ошибка о недоступности памяти.

AJ> Работаю с эдитом так (вдруг неправильно) :

AJ> int EditLen = (int)SendDlgItemMessage(IDC_EDTLOGIN, EM_LINELENGTH, 0L, 0L);
AJ> char* lpszBuffer = new char[EditLen];
AJ> SendDlgItemMessage(IDC_EDTLOGIN, EM_GETLINE, 0L, (LPARAM)lpszBuffer);
AJ> if (userIni.strUserName != NULL)
AJ> ZeroMemory(userIni.strUserName, sizeof(userIni.strUserName));
AJ> if ((strlen(lpszBuffer)) > 0)
AJ> {
AJ> userIni.strUserName = new char[strlen(lpszBuffer)];
AJ> strcpy(userIni.strUserName, lpszBuffer);
AJ> }

AJ>Подскажите, почему может вылетать ошибка с памятью плиз.


Было у меня нечто подобное, помогло вот это:
GetWindowTextLength(GetDlgItem(hDlg,IDC_EDTLOGIN))+1
hDlg — хендл окна родителя твоего эдита, попробуй, может поможет
Re[2]: Ошибка Edit'а
От: _Jah Россия  
Дата: 02.06.05 17:33
Оценка:
Здравствуйте, RMikola, Вы писали:

AJ>>Подскажите, почему может вылетать ошибка с памятью плиз.


RM>Было у меня нечто подобное, помогло вот это:

RM>GetWindowTextLength(GetDlgItem(hDlg,IDC_EDTLOGIN))+1
RM>hDlg — хендл окна родителя твоего эдита, попробуй, может поможет

Не помогло
Самое главное что в Debug работает гладко, а в Release — фигу.
... << RSDN@Home 1.1.3 stable >>
Re[3]: Ошибка Edit'а
От: RMikola  
Дата: 03.06.05 02:53
Оценка:
Здравствуйте, _Jah, Вы писали:

_J>Здравствуйте, RMikola, Вы писали:


AJ>>>Подскажите, почему может вылетать ошибка с памятью плиз.


RM>>Было у меня нечто подобное, помогло вот это:

RM>>GetWindowTextLength(GetDlgItem(hDlg,IDC_EDTLOGIN))+1
RM>>hDlg — хендл окна родителя твоего эдита, попробуй, может поможет

_J>Не помогло

_J>Самое главное что в Debug работает гладко, а в Release — фигу.

Странно, я откомпилил твой кусок — все работает нормально! Только вот ты забыл в
(IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L) указать окно родителя — след. образом:
(hDlg,IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L), у меня без него просто не компилилось, а так и debug и release работают нормально.
Re[4]: Ошибка Edit'а
От: _Jah Россия  
Дата: 03.06.05 23:18
Оценка:
Здравствуйте, RMikola, Вы писали:

RM>Странно, я откомпилил твой кусок — все работает нормально! Только вот ты забыл в

RM>(IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L) указать окно родителя — след. образом:
RM>(hDlg,IDC_EDTPASSW, EM_SETLIMITTEXT, 7L, 0L), у меня без него просто не компилилось, а так и debug и release работают нормально.

Ну вот я об энтом же
А hDlg я не забыл, я просто с MFC работаю.
Возникло подозрение что это глюк MFC
Сегодня убил vc6, ставлю 7. А вдруг поможет...
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.