Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
ВнизБинарные файлы Найти похожие ветки
← →
VKSam © (2004-09-06 15:55) [0]Как читать из бинарного файла определенное количество байт. При этом чтобы в функцию BlockRead(file, buf, count) массив buf был динамическим. если объявлять buf: array of char и устанавливать setlength(buf,n) при чтении блока переменная buf пуста. Что можно сделать в связи с этим.
← →
Reindeer Moss Eater © (2004-09-06 15:57) [1]Что можно сделать в связи с этим.
Прочитать про работу с указателями.
← →
Defunct © (2004-09-06 16:20) [2]> Что можно сделать в связи с этим.
Вам не нужен SetLength, вам нужен GetMem/FreeMem.
PByteArray = ^TByteArray;
TByteArray = array[1..$10000] of byte/char;
P : PByteArray;
GetMem(P, <скока надо>);
BlockRead( F, P^, <скока надо>);
← →
PVOzerski © (2004-09-06 17:22) [3]>чтобы в функцию BlockRead(file, buf, count) массив buf был динамическим
[2] - это вполне правильный путь, притом годится и для ранних версий Delphi. Но можно работать и с динамическими массивами array of <тип>. Только тогда писать надо в начальный элемент массива, вот так: BlockRead(file, buf[0], count). Естественно, SetLength должен быть раньше, чем BlockRead.
← →
Суслик © (2004-09-06 17:30) [4]Если не ошибаюсь то и так можно
BlockRead(file, pointer(buf)^, count).
← →
RomeoGolf (2004-09-06 17:40) [5]А что, обязательно через буфер? А если, скажем, File Of Byte, и читать нужное количество байт в массив. Я примерно так и делал, хотя, возможно, неправильно понял вопрос.
← →
PVOzerski © (2004-09-06 18:48) [6]2RomeoGolf:
Так, конечно, можно, но будет очень медленно. Ощутимо медленнее, чем сразу в массив через blockread.
← →
VKSam © (2004-09-07 13:54) [7]Огромное спасибо!
← →
VKSam © (2004-09-07 13:54) [8]Огромное спасибо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c