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