Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.20;
Скачать: CL | DM;

Вниз

Чтение hex-файла   Найти похожие ветки 

 
Pattern ©   (2003-11-07 14:20) [0]

Как прочитать содержимое hex-файла с начального адреса home_addr_ равного 0Ah и длиной len_byte_ равному 0FA5h или с того же начального адреса и до конца файла? И какого типа должны быть эти переменные, чтобы им задать эти данные? Но самое каверзное, какого типа переменные должны быть result1_ и result2_, которые получат эти данные?
var
F: File of Byte;
place_: String;
home_addr_, len_byte_: Byte; //?????
result1_, result2_: ??????
begin
place_ := "c:\myfile.ext";
AssignFile(F, place_);
Reset(F);
//Результат считывания с начального адреса на длину смещения
result1_ := ????
while not Eof(F) do
begin
//Результат считывания с начального адреса до конца файла
result2_ := ????
end;
end;

Большое спасибо за помощь!


 
Zaratustra ©   (2003-11-07 14:39) [1]

Result* - byte если один байт
home_addr_ - byte
len_byte_ - word или если размер файла больше 65535 то integer
Вроде так...


 
Palladin ©   (2003-11-07 14:52) [2]

А как ты будешь использовать прочитанное дальше?
Ведь если ты вознамерился что то прочитать, то есть какая то цель. Вот исходя из этой цели и решай.


 
Pattern ©   (2003-11-07 15:14) [3]

Спасибо!!! Дело в том, что Result* никак не могут быть Byte, ибо в них считывается не один байт, а какое-то количество. Дело в том, что в них так и будут содержаться эти массивы считанных байт. Это то что касается переменных. А что по поводу функций/процедур? Дело в том, что конечно это можно всё можно решить своим каким то "топорным" методом. Но зачем изобретать колесо? Может эти функции уже существуют?


 
Palladin ©   (2003-11-07 15:18) [4]

Динамические массивы, указатели на участок выделенный в памяти.
Простые вычисления, на уровне начальной школы, помогут определить необходимое количество памяти для выделения.


 
Pattern ©   (2003-11-07 15:23) [5]

То есть другими словами, делать нужно всё в ручную. Почему то я так и думал, но всё таки решил удостовериться очередной раз... На всякий случай... d;-) Всё понятно! В принципе я ответами полностью удовлетворён!!! Спасибо за помощь!!!!


 
Anatoly Podgoretsky ©   (2003-11-07 15:59) [6]

В Борланде и Микрософте не знаю о твоих желаниях, размерах частец и типах данных. Используй TFileStream и два динамических массива, будет проще, сделаешь двумя командами, не считая открытия и закрытия файлов. Если есть пробелы при работе с файлами, то сходи в Королевство Дельфи в Лицей, там есть серия статей по этому поводу.


 
panov ©   (2003-11-07 16:49) [7]

Как вариант - использовать TMemoryStream.
О несомненных плюсах читай в Help(Например, метод LoadFromFile).
О минусах думай сам.


 
Pattern ©   (2003-11-07 22:37) [8]

Я именно через TStream и делаю... Что касается LoadFromFile, то всё таки предпочитаю LoadFromStream и SaveToStream... Лишний раз фрагметировать файлы по диску - тормозить работу программы... А тут прямая работа с потоком...


 
panov ©   (2003-11-07 23:03) [9]

Причем здесь фрагментация?
Ведь речь идет о чтении, а не о записи.
Удобство TMemoryStream в том, что у тебя файл загружен целиком и нет необходимость перечитывать его несколько раз. Работа с указателями упрощается.

А для получения данных любого типа из участка памяти(вплоть до различных структур) достаточно воспользоваться функцией move.


 
Lmz ©   (2003-11-07 23:39) [10]

Пойди в начальную школу и выучи основы информатики.

Потом найди книгу Тейксера и Пачеко и почитай


 
Pattern ©   (2003-11-08 04:28) [11]

to panov
> Причем здесь фрагментация?
> Ведь речь идет о чтении, а не о записи.

Согласен. Но какая разница, хоть LoadFromFile, хоть SaveToFile - операции всё равно с диском ведутся. А если всё таки придётся что то записать/пепреписать? И вообще спор ни о чём идёт. Я же сказал что stream и использую.



Страницы: 1 вся ветка

Текущий архив: 2003.11.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-66002
_Agent_
2003-11-10 13:33
2003.11.20
Вопрос по TStatusBar ...


14-66100
servs
2003-10-28 14:47
2003.11.20
чисто академическая задача по алгоритмам


4-66174
SH
2003-09-25 19:18
2003.11.20
Устойчивый PopUpMenu


1-65900
ak75
2003-11-08 18:00
2003.11.20
TThread. Что не так? И как с этим бороться?


1-65845
Zorlag
2003-11-09 22:58
2003.11.20
Грамотная задержка времени в Delphi