![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как узнать кол-во символов в текстовом файле? [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). Затем просканировать его побайтово считая количество байтов, соотверствующих неотображаемым символам. И, наконец, вычесть это число из размера файла.