Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Помогите! .... С++В

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Пт Июл 05 2002 16:18    Заголовок сообщения: Помогите! .... С++В Ответить с цитатой

Нужно заменить все символы "перевода строки" на "двойной пробел" в поле "мемо".

Нашел пример в книге.
Помещаю в событие(выполнить при двойном нажатии в мемо) компонента мемо.
Думаю чтот не так указал с переменными.
(тут хотел пока попробовать заменить "а" на "б".

AnsiString S1,S2,S3;

S1 = Mprim->Text;
S2 = "а";
S3 = "б";

int i0 = 0, i = S1.Pos(S2);
while(i)
{
S1 = S1.SubString(1,i + i0 - 1) + S3 +
S1.SubString(i+ i0 +S2.Length(),255);
i0 += i - 1 +S3.Length();
i = S1.SubString(i0 + 1, 255).Pos(S2);
}

Ошибок компил. не выдает и видимых действий нет.
Помогите исправить код.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Shuran



Зарегистрирован: 02.07.2002
Сообщения: 49

СообщениеДобавлено: Пт Июл 05 2002 16:31    Заголовок сообщения: Re: Помогите! .... С++В Ответить с цитатой

Конечно использование передовых технологий - дело хорошее, но почему не попробовать попроще?

char S2='a';
char S3='б';
char *szBuffer=Mprim->Text;

for(int i=0; iText=szBuffer;

должно работать...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Shuran



Зарегистрирован: 02.07.2002
Сообщения: 49

СообщениеДобавлено: Пт Июл 05 2002 16:34    Заголовок сообщения: Вот, зараза, обрубило Ответить с цитатой

там где цикл, следует читать

for(int i=0; iText=szBuffer;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Shuran



Зарегистрирован: 02.07.2002
Сообщения: 49

СообщениеДобавлено: Пт Июл 05 2002 16:37    Заголовок сообщения: Re: Вот, зараза, обрубило Ответить с цитатой

оно не понимет символ меньше?

for(int i=0; i меньше strlen(szBuffer); i++) if(szBuffer[i]==S2) szBuffer[i]=S3;

Mprim->Text=szBuffer;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Пн Июл 08 2002 08:59    Заголовок сообщения: Попробовал чтот не работает Ответить с цитатой

char S2='a';
char S3='б';
char *szBuffer=Mprim->Text.c_str();

for(int i=0; iText=szBuffer;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Пн Июл 08 2002 09:00    Заголовок сообщения: отсеченое Ответить с цитатой

for(int i=0; iText=szBuffer;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Пн Июл 08 2002 09:01    Заголовок сообщения: Re: отсеченое Ответить с цитатой

for(int i=0; i меньше strlen(szBuffer); i++)
if(szBuffer[i]==S2) szBuffer[i]=S3;
Mprim->Text=szBuffer;
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Shuran



Зарегистрирован: 02.07.2002
Сообщения: 49

СообщениеДобавлено: Пн Июл 08 2002 15:42    Заголовок сообщения: Re: отсеченое Ответить с цитатой

Я вот тут не понял, ты прикалывался, когда писал ответ 3 раза переписывая мои неудачи написания знака "меньше" или это ты ничего не понял.
Если не понял, то я задам вопрос. Оно не пошло - это что значит: не откопмпилилось или не работает в нормально собранной проге?
Если понял, то тогда я не врубился в твою шутку
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Пн Июл 08 2002 18:43    Заголовок сообщения: Анатолий Ответить с цитатой

Shuran, извини эт, я не понял какой символ отсекает. Я вроде раньше всегда помещал код и все было нормально, это значит я не использовал символы больше, меньше.
Ивини, я не хотел тебя кривить, даже об этом и не думал.
А с кодом, компилятор ошибок не дает, но символы не заменяются.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Shuran



Зарегистрирован: 02.07.2002
Сообщения: 49

СообщениеДобавлено: Вт Июл 09 2002 08:46    Заголовок сообщения: Александр Ответить с цитатой

Ладно, проехали. А вот по поводу не рабочего кода, могу сказать только одно: у меня оно заработало,.. только вот если ты брал копию кода отсюда, то я тута написал вместо русской буквы "а" латинскую, так что, если поменяешь, то работать должно.

зы: а объявлять буфер я бы посоветовал все таки так

char *szBuffer=Mprim->Text.c_str();
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Вт Июл 09 2002 14:20    Заголовок сообщения: Shuran. Огромное спасибо. Ответить с цитатой

Действительно, я только скопировал как обычно для упрощения. А когда все перебрал, то все заработало. Еще раз спасибо за отзывчивость.
reut@land.ru - придет время мож, и я помогу чем смогу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Вт Июл 09 2002 15:03    Заголовок сообщения: Re: Александр, вот пишет.... Ответить с цитатой

Работает код, но выдает предупреждение:
[C++ Warning] FormReg.cpp(693): W8012 Comparing signed and unsigned values.
Как избавиться, я ж в последней строке кода использую переменную?

Можно еще спросить. Как заменить все переводы строки на двоойной пробел.
Пробовал ставить в S2='#10' и пробовал '\n'.
убирает но не совсем(не все) оставляет одну.

Мне это надо чтоб в гриде не отображались всякие нехорошие символы.
Я в форме формирую запись в компонентах TEdit?TMemo, и перед записью в табл. хочу удалить из компонента TMemo все переводы строк, но данным циклом удаляеться не все. Может неправильно указываю что удалить.?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Shuran



Зарегистрирован: 02.07.2002
Сообщения: 49

СообщениеДобавлено: Вт Июл 09 2002 16:59    Заголовок сообщения: Рассказываю Ответить с цитатой

1) Warning кидает из-за того, strlen возвращает тип "unsigned int", значит i надо объявлять в цикле не как "int", а как "unsigned int"
2) Когда ты нажимаешь Enter, в Memo вставляется не один символ '\n', а два: перед ним (по-моему, но может и за ним) идет ещё один - '\r', который тоже нужно заменить.
Т.е. создаешь еще один точно такой же цикл, ничего в нем не меняя, а вот перед ним добавляешь
S2='\r';

3) А вот по поводу грида, я не понял, что ты хочешь, но наверное ты знаешь, что делаешь
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Anatoliy



Зарегистрирован: 15.04.2002
Сообщения: 681
Откуда: Moscow

СообщениеДобавлено: Чт Июл 11 2002 09:42    Заголовок сообщения: Re: Рассказываю Ответить с цитатой

Спасибо все получилось.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...