Форум: "WinAPI";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизПодскажите плиз. Почему не работает код с мапированием файла? Найти похожие ветки
← →
ASDF234 (2005-09-30 10:43) [0]Файл есть на диске и он открывается.
Переменная map всегда = 0 ?!.
procedure TForm1.FormCreate(Sender: TObject);
var file_, map : dword;
buf: pointer;
begin
file_ := CreateFile("c:\file1.txt", GENERIC_READ, FILE_SHARE_READ,
nil, OPEN_EXISTING, 0, 0);
if file_ <> INVALID_HANDLE_VALUE then
try
map := CreateFileMapping(file_, nil, PAGE_READWRITE, 0, 0, nil);
if map <> 0 then
try
buf := MapViewOfFile(map, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if buf <> nil then
try
// now here you have your file1.txt in memory
// beginning at pointer "buf"
finally UnmapViewOfFile(buf) end;
finally CloseHandle(map) end;
finally CloseHandle(file_) end;
end;
← →
BiN © (2005-09-30 11:07) [1]
Почему не работает код...?
CreateFileMapping(file_, nil, PAGE_READWRITE, 0, 0, nil);
MapViewOfFile(map, FILE_MAP_ALL_ACCESS, 0, 0, 0);
Потому что справку не читал.
← →
ASDF234 (2005-09-30 11:40) [2]читал, видно не понял
если не сложно - поясни
← →
begin...end © (2005-09-30 11:48) [3]> ASDF234 (30.09.05 10:43)
Не совпадают права доступа, указанные в CreateFile и CreateFileMapping.
Из справки по CreateFileMapping (параметру flProtect):
PAGE_READWRITE Gives read/write access to the committed region of pages. The file specified by hFile must have been created with the GENERIC_READ and GENERIC_WRITE access rights.
> BiN © (30.09.05 11:07) [1]
А что не так?
← →
ASDF234 (2005-09-30 12:28) [4]> BiN © (30.09.05 11:07) [1]
До MapViewOfFile код не доходит.
>begin...end © (30.09.05 11:48) [3]
поставил в CreateFile в поле dwDesiredAccess GENERIC_READ and GENERIC_WRITE все равно map=0
← →
begin...end © (2005-09-30 12:30) [5]> ASDF234 (30.09.05 12:28) [4]
> поставил в CreateFile в поле dwDesiredAccess GENERIC_READ
> and GENERIC_WRITE все равно map=0
Флаги нужно комбинировать операцией or: GENERIC_READ or GENERIC_WRITE.
← →
Игорь Шевченко © (2005-09-30 12:30) [6]
> поставил в CreateFile в поле dwDesiredAccess GENERIC_READ
> and GENERIC_WRITE все равно map=0
Вежливые люди вызывают SysErrorMessage(GetLastError) и копируют полученное сообщение в форум
← →
ASDF234 (2005-09-30 13:09) [7]>Игорь Шевченко © (30.09.05 12:30) [6]
Извените, машина не в интернете на которой пишу.
Сейчас попробую "or"
← →
ASDF234 (2005-09-30 13:13) [8]>begin...end ©
спасибо, все заработало
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c