Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите плиз. Почему не работает код с мапированием файла? [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);


Потому что справку не читал.


Наверх

Титульная страница Поиск, карта сайта Написать письмо