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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2008, 10:26   #1
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
Печаль Определение количество символов в строке, и самих строк.

Помогите пожалуйста.
Я пишу блокнот, и дело дошло до символов. Смысл такой: Определение количество символов в строке, и самих строк.
Написал переменную:
Код:
resourcestring
  sModified = 'Безымянный';
  sColRowInfo = 'Строка: %3d   Кол-во: %3d';
И обработчик на Timer:
Код:
procedure TForm1.Timer2Timer(Sender: TObject);
var
  CharPos: TPoint;
begin
  SetModified(Memo1.Modified);
  CharPos.Y := SendMessage(Memo1.Handle, EM_EXLINEFROMCHAR, 0,
    Memo1.SelStart);
  CharPos.X := (Memo1.SelStart -
    SendMessage(Memo1.Handle, EM_LINEINDEX, CharPos.Y, 0));
  Inc(CharPos.Y);
  Inc(CharPos.X);
  StatusBar1.Panels[3].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]);
end;
Проблема такая: Memo1 не считает строки, он их записывает в количество символов. А компиляция проходит успешно. В чем дело? Заранее благодарю.
Патрон вне форума Ответить с цитированием
Старый 01.04.2008, 10:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Проблема такая: Memo1 не считает строки,
Неправда: Memo1.Lines.Count даст тебе количество строк начиная с нуля.
Ну а кол-во символов в i-той строке это : =Length(Memo.Lines[i]);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.04.2008, 11:08   #3
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

Тогда почему количество строк все время стоит на 1 ???
Например написал я слово "Привет": 7 символов, нажимаю Enter и кол-во строк изменяется на 9 ?
Патрон вне форума Ответить с цитированием
Старый 01.04.2008, 11:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Понятия не имею.
Когда я пишу в мемо ченить типа:
Да
привет
как дела?

код
Код:
procedure TForm1.Memo1Change(Sender: TObject);
begin
caption:=inttostr(Memo1.Lines.Count);
end;
Выдает мне цифру 3
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.04.2008, 11:44   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Во-первых, EM_EXLINEFROMCHAR относится к richedit'у.
Во-вторых есть EM_GETLINECOUNT.
B_N вне форума Ответить с цитированием
Старый 01.04.2008, 11:49   #6
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Во-первых, EM_EXLINEFROMCHAR относится к richedit'у.
Во-вторых есть EM_GETLINECOUNT.
Я знаю, я в строке USES прописал RICHEDIT

А может чтонибудь блокировать эту функцию? Может просто из-за этого? я уже 5 дней сижу и думаю, уже голова раскалывается

Последний раз редактировалось Stilet; 01.04.2008 в 12:21.
Патрон вне форума Ответить с цитированием
Старый 01.04.2008, 11:52   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Патрон Посмотреть сообщение
Я знаю, я в строке USES прописал RICHEDIT
А TMemo с каких пор richedit'ом стал?
B_N вне форума Ответить с цитированием
Старый 01.04.2008, 11:57   #8
Патрон
Форумчанин
 
Аватар для Патрон
 
Регистрация: 07.03.2008
Сообщений: 151
По умолчанию

Stilet, спасибо за функцию, но мне нужно чтобы считались не только строки но и кол-во символов в ней

Цитата:
Сообщение от B_N Посмотреть сообщение
А TMemo с каких пор richedit'ом стал?
Он не становился, просто EM_EXLINEFROMCHAR как ты уже сказал относится к RICHEDIT'у.
А другой способ пересчета я не знаю)

Последний раз редактировалось Stilet; 01.04.2008 в 12:21.
Патрон вне форума Ответить с цитированием
Старый 01.04.2008, 12:18   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Патрон Посмотреть сообщение
Он не становился, просто EM_EXLINEFROMCHAR как ты уже сказал относится к RICHEDIT'у.
А другой способ пересчета я не знаю)
Ещё раз объясняю: EM_EXLINEFROMCHAR поддерживает richedit, обычный Edit Control возвращает в ответ на него 0. Позиция каретки берется так: строка через EM_LINEFROMCHAR, символ в строке через конечную позицию в EM_GETSEL и вычитание её из EM_LINEINDEX.
B_N вне форума Ответить с цитированием
Старый 01.04.2008, 12:20   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но мне нужно чтобы считались не только строки но и кол-во символов в ней
А ты повнимательнее почитай что я написал, и увидиш прямой ответ на этот вопрос
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
количество символов StartMis Общие вопросы Delphi 4 17.12.2010 06:24
Вывод символов в строке Karl_Karlovi4 БД в Delphi 12 03.06.2008 13:31
Не считает количество символов DeeCee Общие вопросы Delphi 11 24.12.2007 22:57
Подсчет количества заданных символов в строке Mihailo Помощь студентам 3 23.12.2007 11:58
кол-во букв в строке символов (Си) Newman Помощь студентам 1 04.12.2007 02:19