Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.10.2011, 13:29
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию размер (в кб) текста в Мемо

здраствуйте,подскажите как узнать сколько памяти занимает текст в поле Мемо? имею ввиду не в оперативной памяти,а вот если его сохранять в файл.надо узнать какой будет размер сохраняемого файла
Ответить с цитированием
  #2  
Старый 15.10.2011, 13:42
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Один символ - байт или два если юникод.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 15.10.2011, 13:50
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Код:
Length(Memo1.Lines.Text); //покажет в байтах
__________________
Google в помощь
Ответить с цитированием
  #4  
Старый 15.10.2011, 14:14
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

так просто) спасибо
Ответить с цитированием
  #5  
Старый 15.10.2011, 21:19
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

а если открыт файл в кодировке utf-8 то размер и длинна не совпадают.
т.е. я загружаю в мемо файл кодировки utf8 и делаю memo1.text:=UTF8toANSI(memo1.text); и длинна меньше чем размер файла. там видимо какаято служебна информация гдето содержится?както вычислить можно
Ответить с цитированием
  #6  
Старый 15.10.2011, 21:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ещё раз прочитай, что написал M.A.D.M.A.N.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 15.10.2011, 23:21
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

хм,ну тут точно не в два раза получиться.разница примерно пару десятков байт получается.а еще если другой файл то там разница еще меньше.
вот например один файл размером 9726 байт,длинна после функции utf8toansi получается 9711.а другой файл весит 12431, показывает 12372.
Там походу какието некоторые символы по 2байта получаются чтоли,потому что если через notepad++ открыть файл и преобразовать в ansi то кол-во символов будет как показывает и дельфи,а если просто открыть в родной кодировке,то покажет другое кол-во символов,хотя ни буквой больше не стало. и разница не в два раза а также,немного байт прибавляет
Ответить с цитированием
  #8  
Старый 15.10.2011, 23:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Там заголовок существует указывающий на тип кодировки и ещё не мешает прочитать про UTF8.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 15.10.2011, 23:38
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

выяснил.по 2байта считаются только русские буквы.
блин,тоесть мне еще писать чтоб в тексте каждая буква проверялась на предмет кирилицы %)

ну ладно,спасибо
Ответить с цитированием
  #10  
Старый 15.10.2011, 23:42
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Snake22
выяснил.по 2байта считаются только русские буквы.
Не совсем так, правильнее отличные от стандартной латиницы.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 15.10.2011, 23:47
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Лучше вообще полностью на юникоде работать.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #12  
Старый 15.10.2011, 23:52
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

блин!это уже сложнее.
а какие еще символы считаются латиницей кроме ['A'..'z','0'..'9'] ?
как то можно сразу добавить всю таблицу знаков,таких как тире,запятая,точка,вопрос,воскл и тд?-они ж тоже латиницей считаются?
Ответить с цитированием
  #13  
Старый 15.10.2011, 23:54
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Лучше вообще полностью на юникоде работать.
да дело в том что такие вот файлы.прога сама файлы не создаёт,редактирует готовые.и так вот получается
Ответить с цитированием
  #14  
Старый 15.10.2011, 23:57
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Snake22
а какие еще символы считаются латиницей кроме ['A'..'z','0'..'9'] ?
Все, которые находятся во второй половине, то есть с номером выше 128 ($80) уже не стандартная латиница.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #15  
Старый 16.10.2011, 00:11
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

angvelem спасибо! теперь правильно размер считается
Код:
j:=0;//кол-во не латинских символов
for i:=0 to Length(Memo1.Text) do
    if Ord(Memo1.Text[i])>180 then inc(j);
j:=Length(Memo1.Text)+j;

Последний раз редактировалось Snake22, 16.10.2011 в 00:16.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025