![]() |
|
Модераторы: bsa |
![]()
|
|
| cupper |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
Почему если так создавать окно эдита
и вот так считывать из него
то lenNum = 0, а в strNum находиться какойто мусор ? в strNum оно и понятно что мусор потомучто его нет вообще, но если делать в нем ручками char strNum[lenNum+3]; тогда вместо считаной строки из эдита в нем мусор. hEditNum глобальная переменная, и она доступна. А вот если записывать туде SetWindowText (...) то записываеться нормально. Это сообщение отредактировал(а) cupper - 20.4.2009, 13:56 |
||||
|
|||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
в операции char strNum[lenNum] lenNum не может быть переменной, только константой в таком случае, нужно распределить lenNum символов в памяти:
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| cupper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 525 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
хм, чета я на это совсем внимание не обратил, притом в другой моей проге стоит абсолютно такой код, но немного с другими параметрами создаеться эдит, и там все работает О_о
Вобщем вместо того чот было написал
и все гуд считываеться, на счет получения длины строки забил, хз работает или нет спс за то что носом ткнули, порой это помогает возможно GetWindowText принимаю указатель на строку сам потом изменяет ее размер делая его таким чтобы хватило записать туда символов из EDIT в количесте передаваемым функции третьим параметром, потомучто если в выше приведенном коде char strNum[10]; заменить на char strNum[1]; но все равно в strNum считываються нормально и 2 и 3 и т.д. символов из EDIT. Вот так заботяться он нас разработчики библиотек стандартных )) |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: нет Всего: 106 |
GetWindowText сам не может перераспределить память, указатель которую ты ему передаешь,
ему же неизвестно, какими средствами ты ее распределил да и не сможет он тебе вернуть новый адрес массива, в случае, когда по тому же адресу расширить его невозможно а char strNum[1] работает только потому, что у тебя, видимо, в среде не производится слежение за стеком, а он (стек) в момент записи за границу strNum[1] уже повреждается, не в прямом смысле, конечно, но если бы у тебя после определения стояли другие переменные, с какой-нибудь важной информацией, то эта информация после вызова GetWindowText была бы затерта поэкспериментируй немного, и сам убедишься, лучше самого себя осознанно поймать на таких ошибках, чем в ситуации, когда они тебе совсем не нужны -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |