Я же вот тут давал ссылку, КАК читать из текстового файла данные: Файлы
При использовании этой функции программа становится тривиальной:
var X: integer; ... reset(f1); rewrite(f2); while not eof(f1) do begin s:=0; X := 0; while (not eoln(f1)) and (X <> -1) do begin X := get_num(f1); if X <> -1 then s := s + X; end; readln(f1); writeln(f2,s); end; close(f1); close(f2); ...
Хм... Очень интересно... FPC создает, а TP действительно не хочет... Какая-то проблема с EOLn, получается...
Вот это отработало для TP (костыль, конечно, я попробую еще пошаманить):
uses crt; var f1,f2: text; s1,s2: string; i,s,x: integer;
function get_num(var f: text; var eoline: boolean): integer; var x :integer; ch: char; begin get_num:=-1; if not seekeof(f) then begin ch:=#0; x:=0; while not (ch in ['0'..'9']) do begin read(f,ch); end; while (ch in ['0'..'9']) do begin x:=x*10+(Ord(ch)-Ord('0')); read(f, ch);
if ch = #13 then eoline := true;
end; get_num:=x end; end;
var line: boolean;
begin clrscr; writeln('Imya pervogo fajla'); readln(s1); writeln('Imya novogo fajla'); readln(s2); assign(f1,s1); assign(f2,s2); reset(f1); rewrite(f2); while not eof(f1) do begin s:=0; x:=0; line := false; while (not line) and (not seekeof(f1)) do begin x:=get_num(f1, line); if x<>-1 then s:=s+x; end; writeln(f2,s); end;
close(f1); close(f2); readkey end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.