Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
ВнизЧтение 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c