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

Вниз

Вопрос по FileMapping   Найти похожие ветки 

 
Паша ©   (2002-09-26 16:05) [0]

Для увеличения скорости обработки использую FileMapping, результаты впечатляют. Но мне необходимо изменить размер файла, например увеличить. В отладчике вижу, что Ptr увеличился - pchar(Ptr) = ["a","a", "b"]. После записи на диск длина файла остается прежней, хотя "aa" прописалось. Вот тестик:

Procedure zzz;
var
Ptr: Pointer;
hFile: integer;
hMapping: THandle;
i,j: integer;
begin
hFile := FileOpen("e:\10", fmOpenReadWrite + fmShareDenyNone);
Win32Check(hFile<>INVALID_HANDLE_VALUE);
try
hMapping := CreateFileMapping(hFile, nil, PAGE_READWRITE, 0, 0, nil);
Win32Check(hMapping<>0);
try
Ptr := MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
Win32Check(Ptr<>nil);
j:= FileSeek(hFile,0,2);
for i:= 0 to j-1 do
pchar(Ptr)[i]:= "a";

//добавил
FillChar(pchar(Ptr)[j], 1, "b");

FlushViewOfFile(ptr, 0);
finally
UnmapViewOfFile(ptr);
CloseHandle(hMapping);
end;
finally
FileClose(hFile);
end;
end;

Кто знает, в чем проблемма?


 
Вячеслав ©   (2002-09-26 16:36) [1]

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


 
Кулюкин Олег ©   (2002-09-26 16:42) [2]

http://www.delphikingdom.com/treasury/sharedstream01.htm


 
Паша ©   (2002-09-26 16:57) [3]

Спасибо, кажется, понял. Просто я думал, что фиксированный размер работает только для CreateFileMapping($FFFFFFFF,...), т.е. открытом в файле подкачки Винды.



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

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

Наверх




Память: 0.47 MB
Время: 0.025 c
1-21059
Leny
2002-09-27 13:40
2002.10.07
кнопка закрытия


3-20914
Андреев Максим
2002-09-16 13:43
2002.10.07
TAdoDataSet


1-21079
Игорь Бублик
2002-09-24 22:09
2002.10.07
---|Ветка была без названия|---


4-21329
Yuri Btr
2002-08-20 17:50
2002.10.07
Не работает CreateteProcessAsUser....


14-21241
RV
2002-09-12 13:16
2002.10.07
опа... Прихожу с обеда... Где ветка про праздник? че было-то?