Поиск:

Ответ в темуСоздание новой темы Создание опроса
> При работе со строкой выкидывает ошибку.. 
V
    Опции темы
onehalf
Дата 10.4.2011, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.2.2011

Репутация: нет
Всего: нет



Помогите плз, очень досадная ошибка:
пытаюсь удалить из строки 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 остается неизменной..
PM MAIL   Вверх
borisbn
Дата 10.4.2011, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



while (ii>0) не поможет, когда  ii=str.Pos("  "); вернёт 0

добавь 
Код

    if ( ii > 0 )
        str.Delete(ii,1);




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
onehalf
Дата 10.4.2011, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.2.2011

Репутация: нет
Всего: нет



выкидывает все ту же ошибку(..
PM MAIL   Вверх
borisbn
Дата 10.4.2011, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



1. Под отладкой на какой строке твоего кода это возникает ?
2. Создай проект, в котором будет только эти строки и проверь
Код

AnsiString str = "  a  b  ";
int ii;
do {
   ii = str.Pos( "  " );
   if ( ii >0 )
     str.Delete( ii, 1 );
} while (ii>0);




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.