Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.055 c
6-1089387777
SnapIn
2004-07-09 19:42
2004.09.19
Как определить скорость работы сетевой карты


3-1092992465
WellSlava
2004-08-20 13:01
2004.09.19
Изменяемое виртульное поле набора данных


1-1094024674
SNV-Soft
2004-09-01 11:44
2004.09.19
Где найти бесплатные компоненты в стиле XP или Office2000!?


1-1094110477
serg128
2004-09-02 11:34
2004.09.19
Как программировать LPT/COM порт? Т.е. задача такая...


4-1089177267
Кабан
2004-07-07 09:14
2004.09.19
ibutton





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский