Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
7-92282
Илайдж
2003-06-10 14:07
2003.08.28
Как получить текущую температуру процессора?


14-92244
Безымянное среднего рода
2003-08-09 14:33
2003.08.28
Может хватит ?


3-91998
boka
2003-08-06 08:24
2003.08.28
При организации доступа к Ecxel файлу через ODBC возникла проблем


3-91995
xBocT
2003-08-06 09:51
2003.08.28
Флажок в таблице


8-92130
DeadMeat
2003-05-02 20:17
2003.08.28
Анимация в GLScene





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский