Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Тимошенко Дмитрий
Статус: Студент
Рейтинг: 247
∙ повысить рейтинг >>
Сарумян
Статус: Студент
Рейтинг: 185
∙ повысить рейтинг >>
Влaдимир
Статус: Студент
Рейтинг: 158
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1394 от 20.06.2009, 13:05
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 557, экспертов - 187
В номере: вопросов - 1, ответов - 1

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 169428: Нужно посчитать количество символов в мемо без пробелом и энтеров (ну перевод строки ) .Пробовал,мучался.вот теперь пришел к вам :)...



Вопрос № 169428:

Нужно посчитать количество символов в мемо без пробелом и энтеров (ну перевод строки ) .Пробовал,мучался.вот теперь пришел к вам :)

Отправлен: 15.06.2009, 12:55
Вопрос задал: Melixion, Посетитель
Всего ответов: 1
Страница вопроса >>


Отвечает OlegD, 1-й класс :
Здравствуйте, Melixion.

Предлогаю Вам считать количество символов не OnKeyDown событии, а OnKeyUp, а лечше OnKeyPress. OnKeyDown - нажатая кнопка, но не отжатая, OnKeyUp - отжатая кнопка. OnKeyPress - нажатие кнопки (OnKeyDown+OnKeyUp).
При использование события OnKeyDown вы теряете последний символ исходя из вашего кода, так как memo1.text еще не пополнился нажатой, НО НЕ ОТЖАТОЙ кнопкой.
При использование события OnKeyUp вы ничего не теряете, но если нажать кнопку и держать ее нажатой, то данной событие не сработает, пока вы не отожмете кнопку, при этом нажатая кнопка будет выводить в мемо символ, который вы учтете только после того как кнопка будет отжата.
При использование события OnKeyPress счетчик у вас будет выводить реальное количество символов, даже если держать кнопку нажатой.

Вот код для события OnKeyPress, который считает количество символов без учета пробелов и перевода строк.

procedure TForm1.Memo1KeyDown(Sender: TObject; var K ey: Word;
Shift: TShiftState);
var
a: integer;
begin
a:=length(StringReplace(StringReplace(mm1.text, ' ', '', [rfReplaceAll]), #13#10, '', [rfReplaceAll]));
lbl3.caption:=inttostr(a);
end;

Функция StringReplace возвращает строку без пробелов и перевода строк. Первый вызов данной функции заменяет переводы строк на пустую строку. Результат используется в вызове второй функции, которая заменяет пробел на пустую строку. Для полученного результата вычисляется количество строк.

С Уважением Олег.

Ответ отправил: OlegD, 1-й класс
Ответ отправлен: 15.06.2009, 14:04

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 250978 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.2 от 15.06.2009

    В избранное