Пока (i не равет концу файла) делать
Массив:=Read(по одному байту с начала файла);
i:=i+1;
Считывание с файла по 1-му символу.
Код:
Функция конца файла :
Код:
procedure gotoeof (var f:file);
begin
seek (f, 0);
seek (f, filesize(f));
end;
begin
seek (f, 0);
seek (f, filesize(f));
end;
p.s.Функция взята с http://delphiworld.narod.ru.
А не проще ли сначала целиком считать строку и уже к ней обращаться посимвольно вместо массива. Либо считать сразу весь массив (если он не символьный, а числовой, к примеру).
Цитата:
seek (f, 0);
А это зачем?
Цитата: KIV
А это зачем?
Ну за такие функции вообще то надо казнить гражданской казнью - как Чернешевского :)
Но видимо по идее автора - это должно гарантировано устанавливать позицию чтения в начало файла. А зечем это автору - патамушта он не понимает - что возвращает функция seek, и зачем она нужна. От того и появляются вот такие варианты. Шаманы блин.
А за функцию, которая, определяя размер, заодно задвигает позицию чтения - как я уже сказал.
Цитата: karimchik
Как можно считывать с файла по 1-му символу?Это необходимо мне для заполнения массива.
Массивы обычно гораздо проще (и быстрее) заполняются за одно считывание, если это простые типы (не динамические, как String, например).
В добавок к этому я бы ещё посоветовал использовать потоки (TStream).
Вот пример дабы дать направление:
Код:
uses Classes;
type
TMyArray = array[0..10] of Byte;
var
A: TMyArray;
F: TFileStream;
begin
F := TFileStream.Create('file.txt', fmOpenRead);
try
F.ReadBuffer(A[0], SizeOf(A[0]) * Length(A));
finally
F.Free;
end;
end;
type
TMyArray = array[0..10] of Byte;
var
A: TMyArray;
F: TFileStream;
begin
F := TFileStream.Create('file.txt', fmOpenRead);
try
F.ReadBuffer(A[0], SizeOf(A[0]) * Length(A));
finally
F.Free;
end;
end;