Нужно написать функцию, которая возвращает количество строчек в указанном текстовом файле. Я поискал, и встроенной такой функции не нашел, может плохо искал.... Написал такой код:
Цитата:
program Project2;
{$APPTYPE CONSOLE} uses SysUtils;
function textsize(var txtfile:text):longint; begin reset (txtfile); while not EOF(txtfile) do begin readln(txtfile); inc(textsize) end end;
begin { TODO -oUser -cConsole Main : Insert code here } end.
Но компилятор ее не компилирует, он указывает на строчку inc(textsize) и пишет:
Цитата:
[Error] Project2.dpr(14): Not enough actual parameters
Недостаточно актуальных параметров? К чему это, что у меня написано неправильно? Прошу вашей помощи....
Junior
Статус: Не в сети Регистрация: 04.02.2009 Откуда: Санкт-Петербург
странно как-то = ) делфи лень запускать, но если руководствоваться вашей логикой то что-то типа:
Код:
program Project2;
uses SysUtils;
function textsize(txtfile:textfile):longint; begin reset (txtfile); result:=0; //конечно вроде автоматом обнуляется.. но все же while not EOF(txtfile) do begin readln(txtfile); // inc(textsize); вообще, иногда помогает inc(textsize,1); но основная беда в том, что мне почему-то казалось, что это в паскаль для возврата значения нужно было обращаться на имя функции.. // надо что-то типа: inc(result,1); //ну либо inc(result); end; end;
begin { TODO -oUser -cConsole Main : Insert code here } end.
Акула пера
Статус: Не в сети Регистрация: 13.10.2005 Откуда: Москва
tolikrog писал(а):
Нужно написать функцию, которая возвращает количество строчек в указанном текстовом файле. Я поискал, и встроенной такой функции не нашел, может плохо искал....
А я бы сделал так:
Код:
function txtLineCount(fileName: string): cardinal; var sl: TStringList; begin sl:= TStringList.Create; sl.LoadFromFile(fileName); result:= sl.Count; end;
Member
Статус: Не в сети Регистрация: 15.08.2004 Откуда: Красноярск
tolikrog, функция CopyFile определена в модуле windows (uses windows, etc). А по подсчету строк в тексте.. Если текст небольшой, то вариант K-A-A пойдёт. А если реально здоровый, то для оптимизации возможны варианты. Хотя в BDS2006 (реально Turbo Delphi Explorer) пара мильёнов строк за секунду грузятся.
Member
Статус: Не в сети Регистрация: 15.08.2004 Откуда: Красноярск
un8086, не. Вопрос в быстродействии. По-моему, еще Delphi 7 не очень быстро работала с TStringList. Плюс чтение всего файла в объект - это выделение памяти. 80МиБ текста = 120МиБ оперативной.
Junior
Статус: Не в сети Регистрация: 04.02.2009 Откуда: Санкт-Петербург
Ну только если как правила хорошего тона. Это Вам не СИ, так что можно особо не парится, но если не приучить себя к этому то да.. на других языках можно получить уеву тучу ликов
мдя... а зачем для подсчёта количества строк загружать весь текстовый файл?... не кажется немного излишне? не легче пробежаться по файлу и подсчитать с помощью readln(f,buf); в цикле while not eof(f); ну в смысле как и у поставившего вопрос
Последний раз редактировалось ДуччЧ 27.08.2009 18:29, всего редактировалось 3 раз(а).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения