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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2013, 04:46   #1
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
Вопрос Как узнать размер текста в TStringsList?

Доброго времени суток!

Нужно узнать размер данных в TStringList не сохраняя их TStringList.SaveToFile или TStringList.SaveToStream...

Как его вычислить? Так чтобы работало быстро...

Среда RAD Studio 2010.

Какие есть варианты кроме этого?

Код:
TextSize := 0;
for I := 0 to Comments.Count - 1 do
  Inc(TextSize, Length(Comments[i])+2)

Последний раз редактировалось SalasAndriy; 23.11.2013 в 18:58. Причина: Опечатка
SalasAndriy вне форума Ответить с цитированием
Старый 23.11.2013, 06:23   #2
Halogen
Пользователь
 
Аватар для Halogen
 
Регистрация: 23.11.2013
Сообщений: 46
По умолчанию

А разве не TStringList вместо TStringsList ?
Halogen вне форума Ответить с цитированием
Старый 23.11.2013, 06:45   #3
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

sizeof(Comments) можно попробовать.
Кольша вне форума Ответить с цитированием
Старый 23.11.2013, 07:31   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Кольша, Ваш ответ неверен, sizeof (любой экземпляр класса) = sizeof(pointer) т.е. 4 или 8 байт (в зависимости 32- или 64 битная платформа).
Думаю, подойдёт ответ
Код:
TextSize := Length(Comments.Text);
phomm вне форума Ответить с цитированием
Старый 23.11.2013, 09:23   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вам надо количество байт или количество символов?
если первое, то умножить на SizeOf(Char) не забудьте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.11.2013, 13:27   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
размер данных в TStringsList
Код:
...:=Lenght(Comments.text);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2013, 17:50   #7
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Цитата:
Сообщение от Halogen Посмотреть сообщение
А разве не TStringList вместо TStringsList ?
Прошу прощения, очапетка...

Цитата:
Сообщение от phomm Посмотреть сообщение
Кольша, Ваш ответ неверен, sizeof (любой экземпляр класса) = sizeof(pointer) т.е. 4 или 8 байт (в зависимости 32- или 64 битная платформа).
Думаю, подойдёт ответ
Код:
TextSize := Length(Comments.Text);
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вам надо количество байт или количество символов?
если первое, то умножить на SizeOf(Char) не забудьте.
Нужно количество байт... Будет ли такой код:
Код:
TextSize := Length(Comments.Text) * SizeOf(Char);
Работать быстрее, чем если бы я просто сохранил все в файл и узнал размер файла? И если да, то будет ли он быстрее этого кода?
Код:
TextSize := 0;
for I := 0 to Comments.Count - 1 do
  Inc(TextSize, (Length(Comments[i])+2) * SizeOf(Char))
SalasAndriy вне форума Ответить с цитированием
Старый 23.11.2013, 18:59   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Работать быстрее
Да. Будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать размер массива String^ calypso Общие вопросы C/C++ 4 12.11.2013 14:53
firemonkey Как узнать размер экрана? pavellyba Общие вопросы Delphi 7 25.10.2011 15:04
Как узнать размер изображения Lokos Мультимедиа в Delphi 3 21.12.2009 16:44
Как узнать размер файла? photozaz Общие вопросы Delphi 4 01.08.2008 00:29
Как узнать размер массива мандарин Общие вопросы Delphi 2 30.05.2007 19:18