2013-08-10 8 views
0

У меня есть процедура IDL, которая читает файл двоичных данных. Однако в этом случае я получаю сообщение «READU: End of file found. Unit 2, File: data.dat».Чтение двоичного файла с IDL

Вместо уничтожения двоичного файла и его повторного создания. Является ли эта проблема преодолимой? Какой код IDL можно использовать для чтения двоичного файла? Двоичный файл был создан с помощью функции C.

Заранее спасибо.

+0

Можете ли вы пояснить, что вы подразумеваете под «IDL»? – Dai

+0

@Dai Почти уверен, что IDL ссылается на [IDL (язык программирования)] (https://en.wikipedia.org/wiki/IDL_%28programming_language%29), я изменил тег, чтобы отразить это. – jpw

+0

Не могли бы вы предоставить дополнительную информацию о содержимом файла? Что написал ваш код C? Не могли бы вы вставить свой IDL-код, который его читает? – shouston

ответ

0

Исходя из вопроса, я предполагаю, что двоичный файл имеет определенную структуру. Вы можете использовать fstat() и eof(), чтобы обойти это. Например:

openr, lun, 'file.bin', /get_lun 
fs = fstat(lun) 

len = fs.size/n_bytes_in_data_structure 
for i = 0L, len - 1 do begin 
    readu, lun, var 
    ... 

Если вы не знаете размер ваших структур данных, или если вы хотите, чтобы проверить, что есть достаточное количество байтов до чтения, вы можете использовать fs.cur_ptr (после вызова fstat(), конечно) или eof(lun).