![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
LockFile - вопрос чайника
DmitryNekl © (2003-06-26 14:27:00)
Господа, помогите, пожалуйста.
Вопрос следующий: как использовать функции LockFile и UnLockFile в программах на Delphi (если можно, с примером на Delphi)?
Можно на проблему посмотреть шире: я не понимаю, как вообще использовать WinAPI-функции в программах на Delphi, т.к. в описании интерфейса функций приводятся типы аргументов, которых нет в Паскале. И что с этими типами делать - большой вопрос для меня.
Если Вы можете дать ссылочку на статью, где это доступно описывается, буду весьма благодарен.
Т.е. конкретно по LockFile. Описана она так:
BOOL LockFile(
HANDLE hFile,
DWORD dwFileOffsetLow,
DWORD dwFileOffsetHigh,
DWORD nNumberOfBytesToLockLow,
DWORD nNumberOfBytesToLockHigh
);
Итак, вопрос: где я могу узнать, какой параметр что именно обозначает? И какому типу соответствует какой тип в Паскале?
По возможности, приведите пример использования LockFile на Delphi.
Заранее огромное спасибо.
DmitryNekl (2003-06-28 22:45:00) [1]
Все понял, торможу :)))
DmitryNekl (2003-06-28 22:44:00) [2]
2 Anatoly Podgoretsky
Наверное, самый идиотский вопрос: а в чем ошибка? Start и length и объявлены как DWord...
Спасибо!!!!!! :)))
Anatoly Podgoretsky (2003-06-28 22:19:00) [3]
Очень серьезная ошибка, параметры не Word, а dWord
А в остальном ошибки нет
vgb (2003-06-28 22:08:00) [4]
Попробую помочь, чем смогу (сам чайник в этой области)
Для начала, разобреремся с параметрами функции.
Windows SDK гласит:
hFile - хэндл блокируемого файла
dwFileOffsetLow - младшее слово байтового смещения в файле, где блокировка должна начинаться.
dwFileOffsetHigh - старшее слово байтового смещения в файле, где блокировка должна начинаться.
nNumberOfBytesToLockLow - младшее слово длины байтовой области, которая должна блокироваться.
nNumberOfBytesToLockHigh - старшее слово длины байтовой области, которая должна блокироваться.
ИМХО Значит для блокировки части файла вызываешь функцию следующим образом (работоспособность не проверял):
var
FileHandle: Handle;
Start, Length: DWord;
...
LockFile(FileHandle, LoWord(Start), HiWord(Start), LoWord(Length), HiWord(Length));
Ну, а если желаешь заблокировать файл целиком, то Start:= 0 и Length, соответственно, равен размеру файла
ЗЫ: Хэндл файла можешь получить при помощи функции CreateFile
Мастера, поправте, если не прав.
DmitryNekl (2003-06-28 20:05:00) [5]
Спасибо всем, кто пытался мне помочь... Пока я еще не смог разобраться. И продолжаю надеяться на Вашу помощь :).
2 Игорь Шевченко:
Открыл, проверил. Параметры есть, что обозначают - понятней не стало. Примера - нету.
2 VMcL:
По Find Declaration находится строка:
function LockFile; external kernel32 name "LockFile";
И чем мне это может помочь?
Господа, неужели ни у кого нет примера? Ведь лучше один раз увидеть...
VMcL (2003-06-26 21:16:00) [6]
>DmitryNekl © (26.06.03 14:27)
>...приводятся типы аргументов, которых нет в Паскале.
Неужели? А пункт меню Find Declaration(Ctrl+LeftClick) уже отменили?
Игорь Шевченко (2003-06-26 16:23:00) [7]
А узнать, какой параметр что обозначает, можно, выбрав в меню Help пункт Windows SDK и аккуратно набрав слово LockFile - там много чего написано, поверь.
DmitryNekl (2003-06-26 15:54:00) [8]
В файле Windows.pas написано:
function LockFile(hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD; nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh: DWORD): BOOL; stdcall;
и еще пара таких объявлений. Чем это проясняет ситуацию? :(
Игорь Шевченко (2003-06-26 15:30:00) [9]
RTFS: \Program Files\Borland\Delphi\Source\Rtl\Win\Windows.pas
DmitryNekl (2003-06-26 15:23:00) [10]
Спасибо! Но мне больше разобраться хочется :)
Acidy (2003-06-26 15:20:00) [11]
В кладовке есть компонента TFileLocker или что-то в этом роде .....