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

Вниз

Подскажите плиз. Почему не работает код с мапированием файла?   Найти похожие ветки 

 
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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.049 c
4-1128079057
Ландграф Павел
2005-09-30 15:17
2005.12.04
Таймер на выключение экрана


2-1131945110
Laymer
2005-11-14 08:11
2005.12.04
Запуск DOS приложений


1-1131282542
Xarkon
2005-11-06 16:09
2005.12.04
Как получить данные из _удалённого_ richedit?


3-1129585999
SkyR
2005-10-18 01:53
2005.12.04
MySQL 4.12


1-1131017200
-[ HAWK ]-
2005-11-03 14:26
2005.12.04
Прикрепление скинов