Как бы так избавиться от досадной помехи?..
При преобразовании типа char в тип integer получаются не те цифры, которые нужны. Вместо 4 - 10, вместо 75 - 215... это какая-то особенность? Если да, то как её обмануть и получить нормальные цифры?
Program File1;
Var sum : text;
sum1 : file of integer;
s,t : string;
i,c,m,n : integer;
Begin
Assign(sum,'sum.txt');
Assign(sum1,'sum1.dat');
{$I-}
Reset(sum);
Rewrite(sum1);
{$I+}
If IOResult<>0 then
Begin
Writeln('The file is absent.');
Halt;
End;
i:=1;
n:=0;
While not eoln(sum) do
Read(sum,s);
For i:=1 to length(s) do
Begin
If s[i]<>' ' then
Begin
t:=s[i];
Val(t,m,c);
Write(sum1,m);
n:=n+m;
End;
End;
Close(sum);
Close(sum1);
Writeln(n);
End.
Program File1;
Var
sum : text;
sum1 : file of integer;
s,t : string;
i,c,m,n : integer;
Begin
Assign(sum,'sum.txt');
Assign(sum1,'sum1.dat');
{$I-}
Reset(sum);
Rewrite(sum1);
{$I+}
if IOResult <> 0 then begin
Writeln('The file is absent.'); Halt;
end;
n := 0;
while not eoln(sum) do read(sum, s); { Зачем вот это - я так и не понял }
T := '';
For i := 1 to length(s) do begin
if s[i] <> ' ' then T := T + s[i]
else begin
Val(t, m, c);
Write(sum1, m);
n := n + m;
T := '';
End;
End;
{ Ну, и последнее число в строке }
if T <> '' then begin
Val(t, m, c);
Write(sum1,m);
n := n + m;
end;
Close(sum);
Close(sum1);
Writeln(n);
End.