-1

onguard の OgUtil.pas 64 ビット Delphi 64 ビットに移植したい
Pascal で ASM を使用できない この関数を Delphi 64 ビットで動作するように変換できますか

function LockFile(Handle : THandle;
              FileOffsetLow, FileOffsetHigh,
              LockCountLow, LockCountHigh : Word) : Boolean;
    var
   Error : Word;
begin
asm
mov   ax,$5C00
    mov   bx,Handle
mov   cx,FileOffsetHigh
mov   dx,FileOffsetLow
mov   si,LockCountHigh
mov   di,LockCountLow
int   $21
jc    @@001
xor   ax,ax
@@001:
mov   Error,ax
end;
Result := Error = 0;
end;

このコードを完全にパスカルに変換できます

function UnlockFile(Handle : THandle;
                FileOffsetLow, FileOffsetHigh,
                UnLockCountLow, UnLockCountHigh : Word) : Boolean;
var
Error : Word;
begin
asm
mov   ax, $5C01
mov   bx,Handle
mov   cx,FileOffsetHigh
mov   dx,FileOffsetLow
mov   si,UnLockCountHigh
mov   di,UnLockCountLow
int   $21
jc    @@001
xor   ax, ax
@@001:
mov   Error, ax
end;
Result := Error = 0;
end;

Delphi 64 ビットでは、パスカルで ASM を使用できません この関数を変換して、デルファイ 64 ビットで動作するようにできますか
このコードをパスカルに変換するのを手伝ってください

4

2 に答える 2

8

割り込み21hを介して古い DOSLockFileと関数を呼び出しています。これらの呼び出し は、Windows ユニットで定義されているLockFileおよび UnlockFile WinApi メソッドによって更新および置換できます。UnlockFile

function LockFile(hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD;
  nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh: DWORD): BOOL; stdcall;

function UnlockFile(hFile: THandle; dwFileOffsetLow, dwFileOffsetHigh: DWORD;
  nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh: DWORD): BOOL; stdcall;
于 2013-10-10T14:23:08.593 に答える