Количество символов в Memo

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
Dark Ichigo
новенький
Сообщения: 44
Зарегистрирован: 12.03.2009 18:06:51
Контактная информация:

Количество символов в Memo

Сообщение Dark Ichigo »

Есть форма. При выборе combobox или заполнения edit в Memo-поле отражается текст. Мне необходимо посчитать количество символов в это тексте вместе с пробелами.

Делаю так:

Код: Выделить всё

kolznakov.Caption := FloatToStr(Length(resultat.Text));     


В итоге, например, в memo-поле отражается:

Код: Выделить всё

Петрушка, чеснок


А количество символов при этом равно не 16 (как требуется), а 30 (!). Как я понял, количество букв множится на два, а знаки и пробелы считаются правильно. То есть Петрушка=8 знаков, чеснок=6 знаков.

8+6=14.

14*2=28.

28 + 2(пробел и запятая)=30 в итоге

Что делать? Как с этим бороться?

ps.
Замечено, что текст из списка combobox'а, который загружается с помощью LoadFromFile, считается нормально. Но я не могу использовать все поля формы с этой функцией.

Заранее спасибо!
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Dark Ichigo писал(а):

Код: Выделить всё

olznakov.Caption := FloatToStr(Length(resultat.Text));

Код: Выделить всё

olznakov.Caption := FloatToStr(UTF8Length(resultat.Text));
Аватара пользователя
Dark Ichigo
новенький
Сообщения: 44
Зарегистрирован: 12.03.2009 18:06:51
Контактная информация:

Сообщение Dark Ichigo »

ругается
Identifier not found "UTF8Length"

:(
Павел Ишенин
постоялец
Сообщения: 475
Зарегистрирован: 24.03.2007 09:16:52

Сообщение Павел Ишенин »

uses LCLProc
Аватара пользователя
Dark Ichigo
новенький
Сообщения: 44
Зарегистрирован: 12.03.2009 18:06:51
Контактная информация:

Сообщение Dark Ichigo »

добавил. теперь:

Код: Выделить всё

 kolznakov.Caption := FloatToStr(UTF8Length(resultat.Text));

Fatal: Syntax error, ")" expected but "(" found

:(
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Dark Ichigo писал(а):добавил. теперь:

Код: Выделить всё

 kolznakov.Caption := FloatToStr(UTF8Length(resultat.Text));

Fatal: Syntax error, ")" expected but "(" found

:(

Это Вы где-то забыли поставить закрывающую скобку :) но не в этом примере!
Аватара пользователя
Dark Ichigo
новенький
Сообщения: 44
Зарегистрирован: 12.03.2009 18:06:51
Контактная информация:

Сообщение Dark Ichigo »

НАШЁЛ!!! Всем спасибо!!! :lol:
У меня, нуба, была в var строчка

Код: Выделить всё

UTF8Lenght: Ansistring

Ума не приложу, когда я успел туда это тыкнуть.

У меня в Memo три строки. Как я понимаю, каждый перевод строки - это тоже символ? Всё считается точно, только на 3 символа больше.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Dark Ichigo писал(а):У меня в Memo три строки. Как я понимаю, каждый перевод строки - это тоже символ? Всё считается точно, только на 3 символа больше.

Конечно. Более того любой код отличный от #0 является символом.
MaxK
незнакомец
Сообщения: 2
Зарегистрирован: 06.08.2009 09:58:33

Сообщение MaxK »

Хочу добавить.
Если надо взять только часть от Combobox1.text то необходимо пользоваться функцией UTF8Copy,а не просто Copy.
Хотя это не подходит для просто Label.caption. Тут всё как обычно, без UTF8
Ответить