Вверх ↑
Этот топик читают: Гость
Ответов: 758
Рейтинг: 112
#1: 2011-07-12 18:03:23 ЛС | профиль | цитата
Учусь читать файлы по их структуре и решил начать с маленького - научиться читать заголовок файла
code_24603.txt
Читаю файл BMP (просто для примера)
Описание структуры тут
Сам файл t.rar
Все почти получилось
HEX-->424D; value-->BM
HEX-->6E110000; value-->1846607872
HEX-->36000000; value-->905969664

но вместо 1846607872 должен быть размер файла в байтах
Собственно возник вопрос Что я делаю не то и как правильно читать разные типы данных (integer, dword, long, real, double, cardinal ....) из файла в бинарном режиме
карма: 1

0
файлы: 2t.rar [216B] [121], code_24603.txt [2.5KB] [172]
Ответов: 3889
Рейтинг: 362
#2: 2011-07-12 18:57:25 ЛС | профиль | цитата
miver писал(а):
Что я делаю не то

miver, байты читайте ЗАДОМ-НАПЕРЁД

miver писал(а):
HEX-->6E110000; value-->1846607872


6E110000 --> 0000116E --> 4462
36000000 --> 00000036 --> 54

Дальше сами сообразите
карма: 1

1
Голосовали:miver
Ответов: 8926
Рейтинг: 823
#3: 2011-07-12 19:02:45 ЛС | профиль | цитата
miver, я бы так сделал ( и делал, когда изучал разные звуковые файлы )code_24605.txt
карма: 19

1
файлы: 1code_24605.txt [2.8KB] [170]
Голосовали:miver
Ответов: 758
Рейтинг: 112
#4: 2011-07-14 13:53:05 ЛС | профиль | цитата
Как-то сложно получается. Пробую прочитать заголовок с помощью IC
code_24634.txt
Логику подсмотрел в инете
Но вылазят ошибки.
E:\HiAsm\Elements\delphi\code\hiInlineCode_1DC0C10.pas(9) Error: ',' or ':' expected but '=' found
E:\HiAsm\Elements\delphi\code\hiInlineCode_1DC0C10.pas(18) Error: Undeclared identifier: 'THeader'
E:\HiAsm\Elements\delphi\code\hiInlineCode_1DC0C10.pas(37) Error: ')' expected but identifier 'bfType' found

Помогите, пожалуйста, убрать ошибки
карма: 1

0
файлы: 1code_24634.txt [1.8KB] [195]
Ответов: 3889
Рейтинг: 362
#5: 2011-07-14 14:08:19 ЛС | профиль | цитата
miver, намудрили чуток с секциями в объявлении.

карма: 1

0
Ответов: 758
Рейтинг: 112
#6: 2011-07-14 15:04:17 ЛС | профиль | цитата
К сожалению не работает Я предполагаю что в HiAsm нету "packed record"
Так как, так
code_24637.txt
работает
карма: 1

0
файлы: 1code_24637.txt [1.8KB] [187]
Разработчик
Ответов: 26155
Рейтинг: 2127
#7: 2011-07-14 15:17:42 ЛС | профиль | цитата
miver писал(а):
Я предполагаю что в HiAsm нету "packed record"

Кто тебе такое сказал Hiasm не имеет никакого отношения к синтаксису Delphi

code_24638.txt
карма: 22

1
файлы: 1code_24638.txt [1.8KB] [177]
Голосовали:miver
Ответов: 3889
Рейтинг: 362
#8: 2011-07-14 15:22:20 ЛС | профиль | цитата
miver писал(а):
в HiAsm нету "packed record"
Да он много где применяется.
карма: 1

0
Ответов: 758
Рейтинг: 112
#9: 2011-07-15 17:24:58 ЛС | профиль | цитата
Вот что получилось
code_24645.txt
Хочу еще результат выдавать как МТ поток, как это можно реализовать в IC или тыкните носом где можно про это почитать
карма: 1

0
файлы: 1code_24645.txt [1.8KB] [176]
Ответов: 3349
Рейтинг: 233
#10: 2011-07-15 17:32:39 ЛС | профиль | цитата
miver, Читай share.pas
Функции с перефиксом МТ, я с ними не работал.
а старым методом
#pas
var a,b:TData;
begin
a := <>;
b := <>;
a.ldata = @b;
end;
карма: 1

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#11: 2011-07-15 17:37:58 ЛС | профиль | цитата
1
карма: 22

1
файлы: 1code_24646.txt [2.2KB] [177]
Голосовали:miver
Ответов: 3349
Рейтинг: 233
#12: 2011-07-15 17:46:03 ЛС | профиль | цитата
nesco, Это значит что что нибудь присваиваем
карма: 1

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#13: 2011-07-15 17:48:17 ЛС | профиль | цитата
Ivann писал(а):
Это значит что что нибудь присваиваем

Что-нибудь не получится таким методом, ты должен это знать, только TData можно так присвоить, но не String, Integer и тп
карма: 22

0
Ответов: 3349
Рейтинг: 233
#14: 2011-07-15 17:51:14 ЛС | профиль | цитата
nesco, Это и ежу понятно
карма: 1

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#15: 2011-07-15 17:53:06 ЛС | профиль | цитата
Ivann писал(а):
Это и ежу понятно

Ежу, возможно, и понятно, а вот miver-у -- нет, иначе, он бы не спрашивал
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)