home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / SEEK.ASM < prev    next >
Assembly Source File  |  1997-01-16  |  1KB  |  58 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Delphi Runtime Library                          *
  5. ; *                            *
  6. ; *    Copyright (c) 1996 Borland International    *
  7. ; *                            *
  8. ; *******************************************************
  9.  
  10.     INCLUDE    SE.ASM
  11.     INCLUDE    FILEIO.ASM
  12.  
  13.     .386
  14.     .MODEL    FLAT
  15.  
  16.     EXTRN    SetFilePointer:NEAR, GetLastError:NEAR, SetInOutRes:NEAR
  17.         EXTRN   InOutError:NEAR
  18.  
  19.     PUBLIC    _Seek
  20.  
  21.     .CODE
  22.  
  23. ;    PROCEDURE _Seek( f: File; recNum: Longint );
  24.  
  25. _Seek    PROC
  26.  
  27. ; ->    EAX    Pointer to file variable
  28. ;    EDX    Record number
  29.  
  30.     MOV    ECX,EAX
  31.     MOV    EAX,[ECX].Mode        ; check whether file is open
  32.     SUB    EAX,fmInput
  33.     CMP    EAX,fmInOut-fmInput
  34.     JA    @@fileNotOpen
  35.  
  36. ;    SetFilePointer(f.Handle, recNum*f.RecSize, FILE_BEGIN
  37.  
  38.     PUSH    FILE_BEGIN        ; pass dwMoveMethod
  39.     MOV    EAX,[ECX].RecSize
  40.     MUL    EDX
  41.     PUSH    0            ; pass lpDistanceToMoveHigh
  42.     PUSH    EAX            ; pass lDistanceToMove
  43.     PUSH    [ECX].Handle        ; pass hFile
  44.     CALL    SetFilePointer        ; get current position
  45.     INC    EAX
  46.     JZ    InOutError
  47.  
  48. @@exit:
  49.     RET
  50.  
  51. @@fileNotOpen:
  52.     MOV    EAX,103
  53.         JMP     SetInOutRes
  54.  
  55. _Seek    ENDP
  56.  
  57.     END
  58.