home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / EOFFILE.ASM < prev    next >
Assembly Source File  |  1997-01-16  |  1KB  |  78 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    GetFileSize:NEAR, SetFilePointer:NEAR, GetLastError:NEAR
  17.         EXTRN   SetInOutRes:NEAR, InOutError:NEAR
  18.  
  19.     PUBLIC    _EofFile
  20.  
  21.     .CODE
  22.  
  23. ;    FUNCTION _EofFile( f: File ): Boolean;
  24.  
  25. _EofFile PROC
  26.  
  27. ; ->    EAX    Pointer to file variable
  28. ; <-    AL    Boolean result
  29.  
  30.     PUSH    EBX
  31.  
  32.     MOV    EBX,EAX
  33.  
  34.     MOV    EDX,[EBX].Mode        ; File must be open
  35.     SUB    EDX,fmInput
  36.     CMP    EDX,fmInOut-fmInput
  37.     JA    @@fileNotOpen
  38.  
  39.     PUSH    0            ; get file size from OS
  40.     PUSH    [EBX].Handle
  41.     CALL    GetFileSize
  42.     CMP    EAX,-1
  43.     JZ    @@error
  44.  
  45.     PUSH    EAX
  46.  
  47.     PUSH    FILE_CURRENT        ; get file pointer from OS
  48.     PUSH    0
  49.     PUSH    0
  50.     PUSH    [EBX].Handle
  51.     CALL    SetFilePointer
  52.     CMP    EAX,-1
  53.     JZ    @@error
  54.  
  55.     POP    EDX
  56.     CMP    EAX,EDX            ; eof := pos >= size
  57.     SETAE    AL
  58.  
  59. @@exit:
  60.     POP    EBX
  61.  
  62.     RET
  63.  
  64. @@error:
  65.     CALL    InOutError
  66.     MOV    AL,1
  67.     JMP    @@exit
  68.  
  69. @@fileNotOpen:
  70.     MOV    EAX,103
  71.         CALL    SetInOutRes
  72.     MOV    AL,-1
  73.     JMP    @@exit
  74.  
  75. _EofFile ENDP
  76.  
  77.     END
  78.