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

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

Как вывести одной строкой сумму всех строк текстового файла


Igor23 ©   (2008-02-19 21:17:00) 

procedure TForm2.Button4Click(Sender: TObject);
  var
  i,n:integer;
  F:textfile;
  S:string;
begin
n:=LinesCount('gam.txt');
assignfile(F,'gam.txt');
reset(F);
S:='';
   for i:=1 to n do
   begin
      readln(F,S);
      S:=S+S[i];
   end;
   Showmessage(S);// ???? почему только первая строка
closefile(F);                       а не сумма строк???
end;

function LinesCount(const Filename: string): Integer;
var
 HFile: THandle;
 FSize, WasRead, i: Cardinal;
 Buf: array[1..4096] of byte;
begin
 Result := 0;
 HFile := CreateFile(Pchar(FileName), GENERIC_READ, FILE_SHARE_READ, nil,
   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if HFile <> INVALID_HANDLE_VALUE then
 begin
   FSize := GetFileSize(HFile, nil);
   if FSize > 0 then
   begin
     Inc(Result);
     ReadFile(HFile, Buf, 4096, WasRead, nil);
     repeat
       for i:= WasRead downto 1 do
         if Buf[i] = 10 then
           Inc(Result);
       ReadFile(HFile, Buf, 4096, WasRead, nil);
     until WasRead = 0;
   end;
 end;
 CloseHandle(HFile);

end;


Igor23   (2008-02-19 21:48:00) [1]

Всем спасибо! СЕМЕНЫЧУ отдельное МЕРСИ ;-)


trubin   (2008-02-19 21:43:00) [2]


> Подскажите плиз как нормально сделать

Вроде подсказали


Igor23   (2008-02-19 21:40:00) [3]

А что странного? Сначала срабатывает функция LinesCount она в реале выше обраб нажатия кнопки, она работает на ура считает. А вот дальше вопрос. Подскажите плиз как нормально сделать


Семеныч   (2008-02-19 21:35:00) [4]

Вдогонку: а суперфункцию LinesCount выкиньте за ненадобностью.


Семеныч   (2008-02-19 21:32:00) [5]

Странный код... да он не странный, тут вообще беда полная...

procedure TForm2.Button4Click(Sender: TObject);
var
 F: TextFile;
 Result, S: string;
begin
 AssignFile(F, 'gam.txt');
 Reset(F);
 try
   Result := '';
   while not EoF(F) do
   begin
     Readln(F, S);
     Result := Result + S;
   end;
 finally
   CloseFile(F);
 end;
 ShowNessage(Result);
end;

Другой вариант:

procedure TForm2.Button4Click(Sender: TObject);
begin
 with TStringList.Create do
 try
   LoadFromFile('gam.txt');
   ShowMessage(Text);
 finally
   Free;
 end;
end;


  (2008-02-19 21:20:00) [6]

Удалено модератором


Anatoly Podgoretsky   (2008-02-19 21:20:00) [7]

> Igor23  (19.02.2008 21:17:00)  [0]

Странный какой то код.


Наверх

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