![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
недопонимаю... [D7, XP]
new_user ) © (2007-12-18 19:51:00)Пишу в паскале программу, нужно просто считать из файла все значения. В файле только целые числа. Делаю так:
program file_1;
uses crt;
var f : file of integer;
a : integer;
ch : char;
s : string;
begin
clrscr;
Writeln('Hello, world!');
s := 'f:\uxx\j.txt';
assign(f,s);
reset(f);
while not eof(f) do begin
read(f,a);
writeln(a, ' ');
end;
close(f);
readln;
end.
выводит не те числа, что неправильно?
ЗЫ не ругайтесь сильно, только начинаю )
new_user ) (2007-12-18 21:07:00) [1]спасибо всем )разобрался
Palladin (2007-12-18 20:27:00) [2]
> [6] Германн © (18.12.07 20:13)
неа...
1. WinOS: строки есть в любом файле, который содержит набор симоволов оканчивающийся на #13#10 (\r\n)
2. *nix: строкой считается любой набор символов, который оканчивается, в зависимости от OS, управляющим символом #13(\r), или управляющим символом #10(\n) (что гораздо чаще встречается), или совокупностью управляющих символов #13#10(\r\n) и, конечно в зависимости от компилятора, по пути к следованию к этим управляющим символам не встречаются другие управляющие символы отличные от выше приведенных
:)
Германн (2007-12-18 20:13:00) [3]
> Файл, содержащий целые числа ) То есть если файл так описан,
> то каждое число с новой строки?
>
Ответ неверный. Строки есть только в текстовых файлах.
Palladin (2007-12-18 20:13:00) [4]
> 4] new_user ) (18.12.07 20:07)
неа... это означает что файл:
1. размер в байтах которого кратен SizeOf(Integer)
2. содержит в native виде целочисленные значения
Palladin (2007-12-18 20:12:00) [5]
> [3] Германн © (18.12.07 20:02)
о млин... точно... дас ист пиво...
> [2] new_user ) (18.12.07 20:02)
ну так как бы это...
Var
f:Text;
r,s:String;
nLinesCounter,n,i:Integer;
Function StrToInt(Var s:String;Var n:Integer):Boolean;
Var
c:Integer;
Begin
Val(s,n,c);
StrToInt:=c<>0;
End;
Begin
Assign(f,<ФайлеНэйм>); Reset(f);
nLinesCounter:=0;
While Not Eof(f) Do
Begin
nLinesCounter:=nLinesCounter+1;
ReadLn(f,s);
r:='';
For i:=1 to Byte(s[0]) Do
If s[i]<>' ' Then r:=r+s[i] Else
Begin
If StrToInt(r,n) Then Write(n,' ') Else
Begin
WriteLn('Line ',nLinesCounter,' Error');
Halt;
End;
r:='';
End;
End;
Close(f);
WriteLn;
ReadLn;
End.
new_user ) (2007-12-18 20:07:00) [6]
> Германн © (18.12.07 20:02) [3]
> > new_user ) (18.12.07 19:51) А что такое по твоему file
> of integer?
Файл, содержащий целые числа ) То есть если файл так описан, то каждое число с новой строки?
new_user ) (2007-12-18 20:02:00) [7]а как быть, если они не каждый с новой строки? допустим указаны через пробел
Германн (2007-12-18 20:02:00) [8]
> new_user ) (18.12.07 19:51)
А что такое по твоему file of integer?
Palladin (2007-12-18 19:54:00) [9]в случае надежды, что они действительно все integer и каждое значение с новой строки то:
program file_1;
uses crt;
var
f : file of integer;
a : integer;
ch : char;
s : string;
begin
clrscr;
Writeln('Hello, world!');
s := 'f:\uxx\j.txt';
assign(f,s); reset(f);
while not eof(f) do
begin
read ln(f,a);
write(a, ' ');
end;
close(f);
readln;
end.