![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите плиз. Почему не работает код с мапированием файла? [D7, Win2k]
ASDF234 © (2005-09-30 10:43:00)Файл есть на диске и он открывается.
Переменная 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;
ASDF234 (2005-09-30 13:13:00) [1]>begin...end ©
спасибо, все заработало
ASDF234 (2005-09-30 13:09:00) [2]>Игорь Шевченко © (30.09.05 12:30) [6]
Извените, машина не в интернете на которой пишу.
Сейчас попробую "or"
begin...end (2005-09-30 12:30:00) [3]> 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:00) [4]
> поставил в CreateFile в поле dwDesiredAccess GENERIC_READ
> and GENERIC_WRITE все равно map=0
Вежливые люди вызывают SysErrorMessage(GetLastError) и копируют полученное сообщение в форум
ASDF234 (2005-09-30 12:28:00) [5]> BiN © (30.09.05 11:07) [1]
До MapViewOfFile код не доходит.
>begin...end © (30.09.05 11:48) [3]
поставил в CreateFile в поле dwDesiredAccessGENERIC_READ and GENERIC_WRITE все равно map=0
begin...end (2005-09-30 11:48:00) [6]> ASDF234 (30.09.05 10:43)
Не совпадают права доступа, указанные в CreateFile и CreateFileMapping.
Из справки по CreateFileMapping (параметру flProtect):
PAGE_READWRITEGives 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 11:40:00) [7]читал, видно не понял
если не сложно - поясни
BiN (2005-09-30 11:07:00) [8]
Почему не работает код...?
CreateFileMapping(file_, nil, PAGE_READWRITE, 0, 0,nil);
MapViewOfFile(map, FILE_MAP_ALL_ACCESS, 0, 0,0);
Потому что справку не читал.