Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 01:26   #1
Cold_Night
Пользователь
 
Регистрация: 13.02.2009
Сообщений: 32
Радость Байты из файла в array of Byte

Всем привет! У меня такой вопрос: как последовательно считать байт за байтом из файла и разместить их в той же последовательности в динамическом массиве array of Byte?
Cold_Night вне форума Ответить с цитированием
Старый 09.12.2009, 02:11   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
var rl_: array of Byte;
     recl: byte;
...
 fDAT:= TMemoryStream.Create;
 fDAT.LoadFromFile('file');

 setlength(rl_, 0);

for i:=0 to sizeof(fdat) div 2 do begin
  fDAT.Position:= i;
  fDAT.Read(recl, SIZEOF(recl)); // recl

  setlength(rl_,length(rl_)+1);
  rl_[length(rl_)-1]:= recl;
...
смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.12.2009, 07:24   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1)
Цитата:
Код:
setlength(rl_,length(rl_)+1);
операция setlength достаточно долгая, поэтому, когда есть возможность (например, как в данном случае), лучше выносить её из цикла - до цикла сразу установить нужную длину (разумеется, если она известна) и потому уже в цикле заполнять.

2) сейчас нет времени проверить, но, мне кажется,
что банальный BlockRead тоже без проблем прочитает из файла в динамический массив...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2009, 07:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
банальный BlockRead тоже без проблем прочитает из файла в динамический массив
Согласен.
Цитата:
Cold_Night
Тебе это зачем? В разных ситуациях разная стратегия. Например если ты хочеш четко контролировать файл и его содержимое проще работать с ним через TFileStream.
А если тебе нужно все и быстро закачать то BlockRead тут поумеснее будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2009, 09:00   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...могу только добавить, что в принципе не вижу необходимости создавать вообще динамический массив, т.к. рано или поздно ресурсы ваши исчерпаются... проще читать необходимый блок (чтение в MemoryStream достаточно быстрая операция), ну или сделать окно и смещать...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 09.12.2009, 15:46   #6
Cold_Night
Пользователь
 
Регистрация: 13.02.2009
Сообщений: 32
По умолчанию

Цитата:
Тебе это зачем?
Хотел сделать шифрование файла
Всем спасибо, буду разбираться
Cold_Night вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать результат функции как Array of Byte? Alex Cones Общие вопросы Delphi 4 05.12.2009 18:55
convert(array of byte, real48) Ringess Общие вопросы Delphi 3 24.06.2009 13:03
Подскажите! Как преобразовать определенный тип в array of byte BrainIce Общие вопросы Delphi 3 19.05.2009 17:22
Array of byte в файл Deight Общие вопросы Delphi 3 05.12.2008 19:10
Array или не array Димарик Общие вопросы Delphi 4 18.06.2007 15:16