| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > При работе со строкой выкидывает ошибку.. |
| Автор: onehalf 10.4.2011, 00:17 |
| Помогите плз, очень досадная ошибка: пытаюсь удалить из строки str все лишние пробелы(оставить только по одному между словами): while (ii>0) { ii=str.Pos(" "); str.Delete(ii,1); } выкидывает ошибку: "Project ProjectName.exe raiced exception class EAccessViolation with message "Access violation at address..."", сылается на функцию в модуле dstring.h: ThrowIfOutOfRange(idx); // Should Range-checking be optional to avoid overhead ?? Пытался выделываться с функциями IsDelimiter и SubString и контролировать выход за пределы строки всеразличными условиями -- все равно тот же результат.. все эти способы описаны в книге Федоренко, но ни один из них не получается.. пробовал использовать универсальную функцию: str = StringReplace(str, " ", " ", TReplaceFlags() << rfReplaceAll); к счастью ошибок не выдает, но str остается неизменной.. |
| Автор: borisbn 10.4.2011, 00:36 | ||
| while (ii>0) не поможет, когда ii=str.Pos(" "); вернёт 0 добавь
|
| Автор: onehalf 10.4.2011, 09:19 |
| выкидывает все ту же ошибку(.. |
| Автор: borisbn 10.4.2011, 11:46 | ||
| 1. Под отладкой на какой строке твоего кода это возникает ? 2. Создай проект, в котором будет только эти строки и проверь
|