Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Считывание с файла по 1-му символу.

13K
04 апреля 2010 года
karimchik
65 / / 16.06.2008
Уважаемые форумчани!Не мог-бы кто нибудь из вас подсказать,как можно считывать с файла по 1-му символу?Это необходимо мне для заполнения массива.Вот примерно так:
 
Код:
Пока (i не равет концу файла) делать
Массив:=Read(по одному байту с начала файла);
i:=i+1;

Функция конца файла :
 
Код:
procedure gotoeof (var f:file);
begin
seek (f, 0);
seek (f, filesize(f));
end;

p.s.Функция взята с http://delphiworld.narod.ru.
303
05 апреля 2010 года
makbeth
1.0K / / 25.11.2004
А не проще ли сначала целиком считать строку и уже к ней обращаться посимвольно вместо массива. Либо считать сразу весь массив (если он не символьный, а числовой, к примеру).
399
05 апреля 2010 года
KIV
432 / / 20.01.2009
Цитата:
seek (f, 0);


А это зачем?

1
05 апреля 2010 года
kot_
7.3K / / 20.01.2000
Цитата: KIV
А это зачем?


Ну за такие функции вообще то надо казнить гражданской казнью - как Чернешевского :)
Но видимо по идее автора - это должно гарантировано устанавливать позицию чтения в начало файла. А зечем это автору - патамушта он не понимает - что возвращает функция seek, и зачем она нужна. От того и появляются вот такие варианты. Шаманы блин.
А за функцию, которая, определяя размер, заодно задвигает позицию чтения - как я уже сказал.

253
05 апреля 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: 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;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог