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

Вниз

file mapping   Найти похожие ветки 

 
race1   (2004-08-03 06:41) [0]

после замапивания файла в процесс у нас появился указатель где лежат данные файла. как можно пройтись по этим данным по-байтно, т.е. узнать 1-ый быйт, 2-ой байт и т.д.?


 
race1   (2004-08-03 09:03) [1]

а?


 
oleg_SYS ©   (2004-08-03 09:05) [2]

Юзай TFileStream:

...
var
fs : TFileStream;
b : Byte;
begin
fs := TFileStream.Create("путь к файлу", fmOpenRead);
fs.Position := 5; // указываешь какой байт те нужен
fs.Read(b,1); // загружаешь этот байт
fs.Free;

Можно в цикле. Тогда каждый раз Position не нада менять.


 
MegaVolt   (2004-08-03 09:15) [3]

Только читать по байту будет медленно читай по 32К а уж потом лазь по буферу.


 
race1   (2004-08-03 09:20) [4]

в целях удобства я и решил использовать отображённые в память файлы. думал так удобнее с ними работать и быстрее. нифига, блин, только время потратил :(


 
Игорь Шевченко ©   (2004-08-03 09:55) [5]


> после замапивания файла в процесс у нас появился указатель
> где лежат данные файла. как можно пройтись по этим данным
> по-байтно, т.е. узнать 1-ый быйт, 2-ой байт и т.д.?


PChar(Указатель)^ - первый байт

Точно так же, как обычная работа с памятью.

> думал так удобнее с ними работать и быстрее.


Правильно думал


 
race1   (2004-08-03 10:29) [6]

PChar(Указатель)^ - первый байт


pchar(cardinal(указатель) + n)^;  // n-ый байт


так?


 
Игорь Шевченко ©   (2004-08-03 10:37) [7]


> так?


В принципе, можно и так.

FileMapping дает возможность работать с данными файла, как если бы файл целиком был загружен в память.


 
Игорь Шевченко ©   (2004-08-03 10:38) [8]

Можно и PByteArray(Указатель)^[номер_байта]


 
ЮрийК ©   (2004-08-03 10:40) [9]

Примерно так:

TByteArray = array [0..MaxInt div SizeOf(Byte) - 1] of Byte;
PByteArray = ^TByteArray;

PMapedFile : PByteArray;
PMapedFile := MapFile(...);//обёртка функций, которые маппируют файл

PMapedFile[n-1] - n-ный байт в файле

Вместо байта может быть и Word и Integer и т.д.


 
race1   (2004-08-03 10:44) [10]

прикручу у себя работу с замапленными файлами как с массивами. это моя мечта была когда я делал как в [6] :)



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

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

Наверх




Память: 0.48 MB
Время: 0.057 c
1-1091182188
BDenis
2004-07-30 14:09
2004.08.15
Копирование файлов в фоновом режиме


4-1087932125
Ihor Osov'yak
2004-06-22 23:22
2004.08.15
Проблемы при перехвате IDispatch::Invoke


14-1091165953
alex_pv
2004-07-30 09:39
2004.08.15
Программеры из Казахстана откликнетесь


1-1091462197
GuAV
2004-08-02 19:56
2004.08.15
Что лучше применить - отдельный Thread или ProcessMessages?


1-1091173128
Дрейфусятина
2004-07-30 11:38
2004.08.15
Как сделать хитрый поиск по листбоксу ?