Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326

Подсчитать количество символов в текстовом файле

28.01.2010, 15:46. Показов 7989. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать програму, которая открівает файл .тхт, и считает количество сиволов и присваевает ето число переменной.
delphi 10 lite
и желательно создать форму, с кнопкой которой можно открывать файл для вычисления количества символов
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2010, 15:46
Ответы с готовыми решениями:

Подсчитать количество чисел в текстовом файле
Подсчитать кол-во чисел в текстовом файле.

Подсчитать количество слов в текстовом файле
Написать программу, подсчитывающую количества слов в текстовом файле. P.C. Дайте ответ пожалуйста в rar архиве. Я не очень разбираюсь...

Подсчитать количество БУКВ в текстовом файле, используя язык Делфи
Здравствуйте уважаемые господа программисты!!!просто снимаю шляпу перед вашим умом!увы..у некоторых недостаток его в области...

20
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 17:47
Если имеется в виду ANSI или ASCII кодировка символов, то достаточно просто определить размера файла в байтах - это и будет количество содержащихся в нём символов. Это функция FileSize().
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
var
  f : file of Byte;
  CountAnsiChar : Integer;
begin
  //Запускаем диалог открытия файла.
  if not OpenDialog1.Execute then Exit;
  //Связываем файловую переменную с именем файла.
  AssignFile(f, OpenDialog1.FileName);
  //Открываем файл в режиме "только чтение".
  Reset(f);
  //Определяем размер файла в байтах. Это значение равно количеству однобайтных
  //символов в данном файле.
  CountAnsiChar := FileSize(f);
  //Закрываем файл.
  CloseFile(f);
  //Показываем результат.
  ShowMessage('Файл содержит ' + IntToStr(CountAnsiChar) + ' символов.');
end;
1
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 18:06  [ТС]
Более-менее понятно. но как ето будет выглядеть в delphi? если можно то попунктно растолкуйте плиз, а то я в етом деле пока ламер
0
 Аватар для nVz
173 / 171 / 30
Регистрация: 12.12.2009
Сообщений: 1,336
28.01.2010, 18:18
на форму кинь кнопку, 2 раза клацни на неё и туда этот код напиши вот и всё
1
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 18:22  [ТС]
так, с етим я уже разобрался. только мне нужно исключить все пробелы, и вывести все ето в текстовое поле.
0
 Аватар для nVz
173 / 171 / 30
Регистрация: 12.12.2009
Сообщений: 1,336
28.01.2010, 18:40
вместо
Delphi
1
ShowMessage('Файл содержит ' + IntToStr(CountAnsiChar) + ' символов.');
это:
только TEdit тоже на форму кинь сначала
Delphi
1
Edit1.Text := 'Файл содержит ' + IntToStr(CountAnsiChar) + ' символов.';
1
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 18:51  [ТС]
а как сделать чтобы пропускались при вычислении пробелы?
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 18:52
Цитата Сообщение от dimafe6 Посмотреть сообщение
мне нужно исключить все пробелы, и вывести все ето в текстовое поле.
Пробелы исключить? Dimafe6, уточни тогда задание. Что нужно сделать? Прочитать файл и записать его содержимое, например, в TMemo, но без пробелов? Так? И количество символов считать в исходном файле или после удаления пробелов?
0
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 18:57  [ТС]
нет, нужно чтобы в Edit1.Text было число символов без пробелов
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 18:58
А, ясно - требуется подсчитать количество символов в файле, исключая пробелы?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure TForm1.Button1Click(Sender: TObject);
var
  f : file of AnsiChar;
  CharTmp : AnsiChar;
  CountAnsiChar : Integer;
begin
  //Запускаем диалог открытия файла.
  if not OpenDialog1.Execute then Exit;
  //Связываем файловую переменную с именем файла.
  AssignFile(f, OpenDialog1.FileName);
  //Открываем файл в режиме "только чтение".
  Reset(f);
  CountAnsiChar := 0;
  //До тех пор, пока не достигнут конец файла.
  while not Eof(f) do begin
    //Читаем очередной Ansi символ.
    Read(CharTmp);
    //Если прочитанный символ не является пробелом, то подсчитывем его.
    if CharTmp <> ' ' then Inc(CountAnsiChar);
  end;
  //Закрываем файл.
  CloseFile(f);
  //Показываем результат.
  Edit1.Text := 'Файл содержит ' + IntToStr(CountAnsiChar) + ' отличных от пробелов символов.';
end;
0
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 19:14  [ТС]
выдает ошибкуroject project1.exe raised exception class ElnOutError with messege "I/Q error 6"

посмотрите у меня правильно?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
   f : file of AnsiChar;
  CharTmp : AnsiChar;
  CountAnsiChar : Integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
  //Запускаем диалог открытия файла.
  if not OpenDialog1.Execute then Exit;
  //Связываем файловую переменную с именем файла.
  AssignFile(f, OpenDialog1.FileName);
  //Открываем файл в режиме "только чтение".
  Reset(f);
  CountAnsiChar := 0;
  //До тех пор, пока не достигнут конец файла.
  while not Eof(f) do begin
    //Читаем очередной Ansi символ.
    Readln(CharTmp);
    //Если прочитанный символ не является пробелом, то подсчитывем его.
    if CharTmp <> ' ' then Inc(CountAnsiChar);
  end;
  //Закрываем файл.
  CloseFile(f);
  //Показываем результат.
  Edit1.Text := 'Файл содержит ' + IntToStr(CountAnsiChar) + ' отличных от пробелов символов.';
end;
end.
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 19:43
Точно, есть помарка. :
Эту строку:
Read(CharTmp);
надо заменить на:
Read(f, CharTmp);
Цитата Сообщение от dimafe6 Посмотреть сообщение
Readln(CharTmp);
И не в коем случае не Readln(). Dimafe6, пиши как у меня написано -Read(). Т. е., с учётом поправки должно быть:
Read(f, CharTmp);
---
Что касается места объявления переменных. В данном случае лучше объявлять их на уровне процедуры - так как у меня в коде сделано. На уровень модуля выносить объявления есть смысл, только если предполагается, что через эти переменные будет осуществляться обмен данными между разными процедурами.
1
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 19:54  [ТС]
Спасибо, вроде работает.
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
28.01.2010, 20:02
Mawrat,
наверное, и симолы <CR> <LF> считать не нужно
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 20:21
Возможно... Тогда, наверное, надо пропускать любые символы, которые не являются буквами.
Пусть Dimafe6, уточнит этот момент. Можно сделать так, что будут подсчитываться только буквы (кириллицы и/или латиницы).
Dimafe6, чтобы при подсчёте пропускать символы пробела, табуляции, переноса строки (#13#10) можно сделать так:
Delphi
1
2
3
...
if not ( CharTmp in [' ', Char(9), Char(10), Char(13)] ) then Inc(CountAnsiChar);
...
При этом символы '.', ',', ':', ';', '!', '?' будут подсчитываться. Если их тоже считать не надо, то просто надо добавить в множество:
Delphi
1
2
3
...
if not ( CharTmp in [' ', Char(9), Char(10), Char(13), '.', ',', ':', ';', '!', '?'] ) then Inc(CountAnsiChar);
...
0
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 20:50  [ТС]
Mawrat, пожалуй да, нужно сделать чтобы подсчитывались только буквы кирилицы

Добавлено через 21 минуту
кто знает как сделать так, чтобы с поля TEdit введенные данные записывались в переменную?

Добавлено через 14 секунд
кто знает как сделать так, чтобы с поля TEdit введенные данные записывались в переменную?
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 20:58
Вот вариант, где подсчитываются только буквы кириллицы.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.Button2Click(Sender: TObject);
const
  //Все буквы кириллицы.
  ABCyr = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯЬЪ';
var
  f : file of AnsiChar;
  CharTmp : AnsiChar;
  CountAnsiChar : Integer;
begin
  //Запускаем диалог открытия файла.
  if not OpenDialog1.Execute then Exit;
  //Связываем файловую переменную с именем файла.
  AssignFile(f, OpenDialog1.FileName);
  //Открываем файл в режиме "только чтение".
  Reset(f);
  CountAnsiChar := 0;
  //До тех пор, пока не достигнут конец файла.
  while not Eof(f) do begin
    //Читаем очередной Ansi символ.
    Read(f, CharTmp);
    //Преобразуем символ в верхний регистр.
    CharTmp := AnsiUpperCase(CharTmp)[1];
    //Если прочитанный символ является буквой кириллицы, то подсчитывем его.
    if Pos(CharTmp, ABCyr) > 0 then Inc(CountAnsiChar);
  end;
  //Закрываем файл.
  CloseFile(f);
  //Показываем результат.
  Edit1.Text := 'Файл содержит ' + IntToStr(CountAnsiChar) + ' букв кириллицы.';
end;
Поясню эту строчку:
Delphi
1
2
3
4
...
    //Преобразуем символ в верхний регистр.
    CharTmp := AnsiUpperCase(CharTmp)[1];
...
AnsiUpperCase(CharTmp) возвращает строку. А CharTmp - это отдельный символ. Строка и символ - это разные типы данных. AnsiUpperCase(CharTmp)[1] возвращает первый символ строки - что нам и нужно.
---
Данные из TEdit можно переписать в строковую переменную, например:
Delphi
1
2
3
4
var
  StrTmp : String;
begin
  StrTmp := Edit1.Text;
1
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
28.01.2010, 22:54  [ТС]
а как сделать так, чтобы числа введенные в поле TEdit обрабатывалиси в програме как челочисленные?
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 23:50
Извлекать из строки записи целых или вещественных чисел можно так:
Delphi
1
2
3
4
5
6
var
  IntTmp : Integer;
  FltTmp : Double;
begin
  IntTmp := StrToInt(Edit1.Text);
  FltTmp := StrToFloat(Edit2.Text);
Функция StrToFloat() в качестве разделителя целой и дробной части числа может ожидать символ '.' или ',' - это зависит от настоек Windows (раздел региональные настройки в панели управления Windows). Либо разделитель можно задать в программе:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var
  IntTmp : Integer;
  FltTmp : Double;
  LastDS : Char;
begin
  IntTmp := StrToInt(Edit1.Text);
  //Запоминаем текущее значение разделителя.
  LastDS := DecimalSeparator;
  //Устанавливаем в качестве разделителя знак '.'
  DecimalSeparator := '.';
  FltTmp := StrToFloat(Edit2.Text);
  //Восстанавливаем прежнее значение разделителя.
  DecimalSeparator := LastDS;
Переменная DecimalSeparator определена в модуле SysUtils. И при запуске программы инициализируется согласно региональным настройкам Windows.
0
Sniper
 Аватар для dimafe6
96 / 64 / 4
Регистрация: 28.01.2010
Сообщений: 326
29.01.2010, 00:07  [ТС]
а как например из поля TEdit1 выделить число, записать его в переменную, потом вывести в поле TEdit2?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2010, 00:07
Помогаю со студенческими работами здесь

Подсчитать количество символов или пробелов в текстовом поле
У меня данная задача в делфи: задаётся строка в текстовом поле пользователем, так же пользователь выбирает переключатель кол-во символов...

В текстовом файле посчитать количество слов, чисел, символов
в текстовом файле посчитать количество слов, чисел(не цифр, а именно чисел), символов. вывести в консоль и в другой текстовый файл(не в...

В текстовом файле подсчитать количество строк, оканчивающихся буквой "S"
В текстовом файле подсчитать количество строк, оканчивающихся буквой &quot;S&quot; Ребят помогите пожалуйста

Подсчитать количество символов в текстовом файле
Здравствуйте, вот полное условие: Составить программу обмена местами двух любых элементов типизированного файла, в котором записаны...

В текстовом файле подсчитать количество символов и строк
Ребята! Помогите разобраться с файлами нужно - в текстовом файле. Подсчитать количество символов и строк в нём. Объясните как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru