Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

заблокированный файл.

10K
26 февраля 2008 года
In0stRAnez
66 / / 16.02.2008
Вот по гуглив нашол это, вот только я незнаю что куда, может кто подробно объяснить что куда, чтоб потом небыло вопросов!

Есть как минимум два способа сделать это, но один из них, при помощи Windows API (LockFileEx и UnlockFileEx) используя параметр LOCKFILE_EXCLUSIVE_LOCK не очень хорош на мой взгляд.

Поэтому предлагаю другой способ, путём создания файла при помощи функции OpenFile:

hMyLockedFile := OpenFile( 'c:\variables.dat', ofStruct, OF_CREATE Or OF_READWRITE Or OF_SHARE_EXCLUSIVE );


заранее спс!
261
26 февраля 2008 года
ahilles
1.5K / / 03.11.2005
ткже можно так заблокировать, что тоже самое что через OpenFile, но так понятнее
f:=CreateFile('f:\qqq.txt',GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
Третий параметр задаёт флаги совместного доступа
FILE_SHARE_READ кто-то другой сможет открыть файл на чтение
FILE_SHARE_WRITE кто-то другой сможет открыть файл на запись

Суть блокировки заключается в том что ты открываешь файл не указав флаги совместного доступа (третий параметр равен нулю), следовательно никто другой несможет открыть файл (т.е. получить хендл) даже на чтение. Если нельзя открыть файл (если нет хендла) значит нельзя работать с файлом.
10K
26 февраля 2008 года
In0stRAnez
66 / / 16.02.2008
procedure TForm1.Button1Click(Sender: TObject);
var
GENERIC_READ: FILE_SHARE_READ;
GENERIC_WRITE : FILE_SHARE_WRITE;
begin
CreateFile('f:\qqq.txt',GENERIC_READ+GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
end;

Вот ошибки
[Error] Unit1.pas(28): '..' expected but ';' found
[Error] Unit1.pas(29): '..' expected but ';' found
[Warning] Unit1.pas(31): Constant 0 converted to NIL
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
261
26 февраля 2008 года
ahilles
1.5K / / 03.11.2005
ты читать умеешь?
 
Код:
var
  GENERIC_READ: FILE_SHARE_READ;
  GENERIC_WRITE : FILE_SHARE_WRITE;

что за бред?

делай так:
 
Код:
var
  h:THandle;

procedure TForm1.Button1Click(Sender: TObject);

begin
  h:=CreateFile('f:\qqq.txt',GENERIC_READ+GENERIC_WRITE ,0,0,OPEN_EXISTING,0,0);
end;

для разблокировки создаёшь ещё одну кнопку и в ней пишешь

 
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  CloseHandle(h);
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог