| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Непонятная ошибка при работе со строками |
| Автор: uwannadie 23.5.2011, 10:49 | ||||||
| отлаживал программу ,пытаяся выловить AV. для этого подключил FASTMM после подключения имеем налицо ошибку в строчке
лог фастмм-а:
сама ошибка возникает в System._NewUnicodeString:
на борту Embarcadero® Delphi® XE Version 15.0.3953.35171 FastMM 4.97 на всякий пожарный прилагаю код модуля, в котором находится строка с ошибкой Добавлено через 5 минут и 14 секунд UPD выключил FastMM, ошибка исчезла, но появляется старый AV :( |
| Автор: MetalFan 23.5.2011, 14:19 | ||
uwannadie, сразу бросилась в глаза неинициализированная локальная переменная в цикле
Ну и по StrLCopy замечание... учитывается ли, что Dest должно быть размером MaxLen+1 для null terminator'а? Может еще какие косяки есть. |
| Автор: northener 23.5.2011, 15:24 | ||
Появление или не появление AV это дело случая. Появление AV есть прямое указание на ошибку в программе, отсутствие AV ни о чем не говорит. |
| Автор: uwannadie 23.5.2011, 15:29 |
| ну это ясно. в общем ошибка со строкой исчезла совсем после правки параметров StrLCopy теперь FASTMM добрался до основного гвоздя - AV |
| Автор: MetalFan 23.5.2011, 17:27 | ||
Всмысле, что размер Dest = MaxLen+1, т.е. эта функция запишет MaxLen cимволов, и в конце добьет нулем. В твоем случае, если строка слишком длинная, то ноль этот улетал за пределы Dest. |
| Автор: uwannadie 23.5.2011, 17:59 | ||||||
ну это понятно, но я думаю тут проблема решилась бы проверкой длины массива символов вида
как раз 1 место для #0 останется в любом случае |