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

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

Бинарные файлы [D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


VKSam ©   (2004-09-06 15:55:00) 

Как читать из бинарного файла определенное количество байт. При этом чтобы в функцию BlockRead(file, buf, count) массив buf был динамическим. если объявлять buf: array of char и устанавливать setlength(buf,n) при чтении блока переменная buf пуста. Что можно сделать в связи с этим.


VKSam   (2004-09-07 13:54:00) [1]

Огромное спасибо!


VKSam   (2004-09-07 13:54:00) [2]

Огромное спасибо!


PVOzerski   (2004-09-06 18:48:00) [3]

2RomeoGolf:
Так, конечно, можно, но будет очень медленно. Ощутимо медленнее, чем сразу в массив через blockread.


RomeoGolf   (2004-09-06 17:40:00) [4]

А что, обязательно через буфер? А если, скажем, File Of Byte, и читать нужное количество байт в массив. Я примерно так и делал, хотя, возможно, неправильно понял вопрос.


Суслик   (2004-09-06 17:30:00) [5]

Если не ошибаюсь то и так можно
BlockRead(file, pointer(buf)^, count).


PVOzerski   (2004-09-06 17:22:00) [6]

>чтобы в функцию BlockRead(file, buf, count) массив buf был динамическим
[2] - это вполне правильный путь, притом годится и для ранних версий Delphi. Но можно работать и с динамическими массивами array of <тип>. Только тогда писать надо в начальный элемент массива, вот так: BlockRead(file, buf[0], count). Естественно, SetLength должен быть раньше, чем BlockRead.


Defunct   (2004-09-06 16:20:00) [7]

>  Что можно сделать в связи с этим.

Вам не нужен SetLength, вам нужен GetMem/FreeMem.

PByteArray = ^TByteArray;
TByteArray = array[1..$10000] of byte/char;

P : PByteArray;

GetMem(P, <скока надо>);
BlockRead( F, P^, <скока надо>);


Reindeer Moss Eater   (2004-09-06 15:57:00) [8]

Что можно сделать в связи с этим.
Прочитать про работу с указателями.


Наверх

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