Главная страница
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.045 c
2-1132051704
RiP
2005-11-15 13:48
2005.12.04
время выполнения массива


2-1131960085
alsov
2005-11-14 12:21
2005.12.04
Перевод Variant в TDate


4-1128324552
Roughneck
2005-10-03 11:29
2005.12.04
Можно ли установить Hook на появление процесса?


6-1125063265
Русланка
2005-08-26 17:34
2005.12.04
А как загрузить в Memo содержимое текстового файла в интернете


4-1128096356
SpyBoy
2005-09-30 20:05
2005.12.04
ОЗУ