Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2008, 10:07   #1
Febreze
Пользователь
 
Аватар для Febreze
 
Регистрация: 20.04.2008
Сообщений: 23
По умолчанию Исключить #13#10 из Length

И снова здравствуйте.
Есть поле Memo, сумма введенных символов которого отображается в StatusBar'e. Заметил что при переводе строки добавляется 2 символа, я так понимаю это #13#10. Как поставить условие чтобы при появлении этих символов сумма уменьшалась на 2 единицы.
Теоретически я думал что-то сделать подобное, только с Delphi-орфографией проблемы: if CurrentMemo.Text=#13#10 then MainForm.StatusBar1.Panels[1].Text - 2;
"Стаж" работы в DELPHI с 18.04.2008
Febreze вне форума Ответить с цитированием
Старый 26.04.2008, 11:03   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Лучше посчитать символы всех строк в Memo

Код:
var C:integer;
...
C := 0;
for i:=0 to Memo1.Lines.count-1 do begin
   C := C + length(Memo1.Lines[i])
end;
alexBlack вне форума Ответить с цитированием
Старый 26.04.2008, 11:16   #3
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Честно говоря с налету не получилось воспроизвести эффект. Может исходник выложишь?
Баламут вне форума Ответить с цитированием
Старый 26.04.2008, 11:24   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
Лучше посчитать символы всех строк в Memo
Зачем? Символами #13#10 заканчиваются все строки, поэтому из длины текста можно вычесть (количество строк)*2
Код:
procedure TMainForm.CurrentMemoChange(Sender: TObject);
var
  L: integer;
begin
  with CurrentMemo do
    begin
      L:=Length(Text)-Lines.Count*2;
      if Lines.Count = 0 then L:=0 else
        if Text[Length(Text)] <> #10 then L:=L+2;
    end;
  MainForm.StatusBar1.Panels[1].Text:=IntToStr(L);
end;
_Dmitry вне форума Ответить с цитированием
Старый 26.04.2008, 11:46   #5
Febreze
Пользователь
 
Аватар для Febreze
 
Регистрация: 20.04.2008
Сообщений: 23
По умолчанию

1. Что я не понял зачем количество строк удалять на 2
2. Считать пустые строки, которые являются разделителем абзацев, считать тоже не надо. Только текст.
"Стаж" работы в DELPHI с 18.04.2008
Febreze вне форума Ответить с цитированием
Старый 26.04.2008, 11:52   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Что я не понял зачем
Можно подумать, тебя кто-то понял. Напиши конкретно задачу и покажи свой код, а иначе нечего засорять эфир.
puporev вне форума Ответить с цитированием
Старый 26.04.2008, 11:57   #7
Febreze
Пользователь
 
Аватар для Febreze
 
Регистрация: 20.04.2008
Сообщений: 23
По умолчанию

Да в принципе и выкладывать нечего. Функция Length считает количество символов в поле Memo и это отображается где-нибудь (не важно):

(IntToStr(Length(CurrentMemo.Text)) )

Но функция считает также спец.сиволы "конец коретки" и "перевод строки". Мне не нужно их считать. Поэтому я и спрашивал, каким образом поставить условие, чтобы при встрече функцией Length таких символов, она их не суммировала.
"Стаж" работы в DELPHI с 18.04.2008

Последний раз редактировалось Febreze; 26.04.2008 в 11:59.
Febreze вне форума Ответить с цитированием
Старый 26.04.2008, 12:13   #8
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от Febreze Посмотреть сообщение
1. Что я не понял зачем количество строк удалять на 2
2. Считать пустые строки, которые являются разделителем абзацев, считать тоже не надо. Только текст.
Программа (см. пост #4) и считает только символы текста.
В Memo каждая строка заканчивается символами #13#10 (этих символов 2). Если у вас 50 строк, то "лишних" символов будет 100=50*2. Вот эту цифру и предлагается вычесть из общей длины текста.
_Dmitry вне форума Ответить с цитированием
Старый 26.04.2008, 12:28   #9
Febreze
Пользователь
 
Аватар для Febreze
 
Регистрация: 20.04.2008
Сообщений: 23
По умолчанию

Ой, точно...


Преогромное спасибо!
"Стаж" работы в DELPHI с 18.04.2008
Febreze вне форума Ответить с цитированием
Старый 26.04.2008, 12:47   #10
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

На самом деле,
Цитата:
Если у вас 50 строк, то "лишних" символов будет 100=50*2.
будет неверно Если последняя строка не переведена т.е. заканчивается #0, а не #13#10#0. Так что Перебором каждой строки, думаю будет самым верным.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключить часть Литов valerij Microsoft Office Excel 2 02.07.2008 14:33
исключить повтор в делфи murzinani Помощь студентам 4 27.05.2008 22:13