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

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

недопонимаю... [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.


Наверх

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