home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1997 April
/
Chip_1997-04_cd.bin
/
prezent
/
cb
/
data.z
/
SEEK.ASM
< prev
next >
Wrap
Assembly Source File
|
1997-01-16
|
1KB
|
58 lines
; *******************************************************
; * *
; * Delphi Runtime Library *
; * *
; * Copyright (c) 1996 Borland International *
; * *
; *******************************************************
INCLUDE SE.ASM
INCLUDE FILEIO.ASM
.386
.MODEL FLAT
EXTRN SetFilePointer:NEAR, GetLastError:NEAR, SetInOutRes:NEAR
EXTRN InOutError:NEAR
PUBLIC _Seek
.CODE
; PROCEDURE _Seek( f: File; recNum: Longint );
_Seek PROC
; -> EAX Pointer to file variable
; EDX Record number
MOV ECX,EAX
MOV EAX,[ECX].Mode ; check whether file is open
SUB EAX,fmInput
CMP EAX,fmInOut-fmInput
JA @@fileNotOpen
; SetFilePointer(f.Handle, recNum*f.RecSize, FILE_BEGIN
PUSH FILE_BEGIN ; pass dwMoveMethod
MOV EAX,[ECX].RecSize
MUL EDX
PUSH 0 ; pass lpDistanceToMoveHigh
PUSH EAX ; pass lDistanceToMove
PUSH [ECX].Handle ; pass hFile
CALL SetFilePointer ; get current position
INC EAX
JZ InOutError
@@exit:
RET
@@fileNotOpen:
MOV EAX,103
JMP SetInOutRes
_Seek ENDP
END