Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как узнать кол-во символов в текстовом файле? [D7, WinXP]


Black ©   (2004-09-16 13:32:00) 

как узнать кол-во символов в текстовом файле?


begin...end   (2004-09-16 14:39:00) [1]


> [13] kukuikar ©   (16.09.04 14:37)

Расслабься :-)


kukuikar   (2004-09-16 14:37:00) [2]


> > kukuikar
>
> Садись, четыре :-)

???


begin...end   (2004-09-16 14:34:00) [3]


> kukuikar

Садись, четыре :-)


kukuikar   (2004-09-16 14:00:00) [4]

var
ColSym: Integer;
Str: String;
F: TextFile;
begin
AssignFile(F, 'C:\autoexec.bat');
Reset(F);
ColSym:=0;
While not EoF(F) do
  begin
 ReadLn(F, Str);
 ColSym:=ColSym+Length(Str);
  end;
ShowMessage(IntToStr(ColSym));//включая пробелы и знаки табуляции
end;


kukuikar   (2004-09-16 14:00:00) [5]

var
ColSym: Integer;
Str: String;
F: TextFile;
begin
AssignFile(F, 'C:\autoexec.bat');
Reset(F);
ColSym:=0;
While not EoF(F) do
  begin
 ReadLn(F, Str);
 ColSym:=ColSym+Length(Str);
  end;
ShowMessage(IntToStr(ColSym));//включая пробелы и знаки табуляции
end;


Суслик   (2004-09-16 13:57:00) [6]


>  [8] Суслик ©   (16.09.04 13:56)

Уточнение.

fffe и feff это так называемый BOM (bit of mask, вроде :))

unicode файл может быть и без BOM.

тогда колво символов действиетльно div 2...


Суслик   (2004-09-16 13:56:00) [7]


>  [3] [lamer]Barmaglot ©   (16.09.04 13:36)


> Для Юникоде размер файла в двое больше количества символов
> (каждый символ представлен 2 байтами)...

Не совсем так.
Попробуй создать notepadom unicode файл. Он будет сохранен либо младший байт идет раньше (little endian, кажется) либо наоборот (не помню как называется).

А вот признак какой порядок байт используется пишется в первых 2 байтах: либо $fffe либо $feff.


Anatoly Podgoretsky   (2004-09-16 13:55:00) [8]

Тогда и бинарники неактуально :-)


[lamer]Barmaglot   (2004-09-16 13:53:00) [9]

to Amoeba ©   (16.09.04 13:41) [5]

Тогда и MemoryMappedFile тоже не актуально... :-)


Amoeba   (2004-09-16 13:41:00) [10]

Текстовые файлы в Юникоде (судя по уровню знаний автора вопроса) расмматривать в данном случае неактуально.


Amoeba   (2004-09-16 13:39:00) [11]


> begin...end ©   (16.09.04 13:35) [1]

Раз файл ТЕКСТОВЫЙ, то служебные/неотображаемые символы не должны учитываться. В случае бинарника вопрос бы не возник (если его автор не ламер).


[lamer]Barmaglot   (2004-09-16 13:36:00) [12]

толи я чего-то не понимаю, толи одно из двух...

для Ansi файлов (Win98) размер файла в байтах соответствует количеству символов (считая разделители и табуляцию). Для Юникоде размер файла в двое больше количества символов (каждый символ представлен 2 байтами)...


begin...end   (2004-09-16 13:35:00) [13]

Разделив размер файла на размер, занимаемый одним символом, получим количество символов (включая служебные).


Amoeba   (2004-09-16 13:35:00) [14]

Отобразить его в память (см. MemoryMapped files). Затем просканировать его побайтово считая количество байтов, соотверствующих неотображаемым символам. И, наконец, вычесть это число из размера файла.


Наверх

Титульная страница Поиск, карта сайта Написать письмо