home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / MAGAZINE / MISC / QBNWS203.ZIP / INTRPT2.ZIP / FILEX.BAS < prev    next >
Encoding:
BASIC Source File  |  1991-07-21  |  1.4 KB  |  67 lines

  1. DECLARE FUNCTION FileExists% (filename$)
  2.  
  3. 'FileExists using INTRPT2.OBJ INTERRUPTX()
  4. 'Cornel Huth
  5. '21-Jul-91
  6.  
  7. 'C>bc FILEX /o;
  8. 'C>link FILEX+INTRPT2;
  9. 'or C>link FILEX,FILEX.EXE,nul,QB.LIB if INTRPT2 is in QB.LIB
  10.  
  11. TYPE RegTypeX
  12. ax AS INTEGER
  13. bx AS INTEGER
  14. cx AS INTEGER
  15. dx AS INTEGER
  16. bp AS INTEGER
  17. si AS INTEGER
  18. di AS INTEGER
  19. flags AS INTEGER
  20. ds AS INTEGER
  21. es AS INTEGER
  22. END TYPE
  23.  
  24. DECLARE SUB INTERRUPTX (intnum%, ireg AS RegTypeX, oreg AS RegTypeX)
  25.  
  26. DEFINT A-Z
  27.  
  28. filename$ = COMMAND$
  29. IF LEN(filename$) THEN
  30.    stat = FileExists(filename$)
  31.    IF stat = 0 THEN PRINT "found" ELSE PRINT "not found, DOS error:"; stat
  32. ELSE
  33.    PRINT "no filename, use: C>FILEX filename"
  34. END IF
  35. SYSTEM
  36.  
  37. FUNCTION FileExists (filename$)
  38.  
  39. 'returns 0 if file exists and is accessible
  40. 'else returns DOS error
  41.  
  42. DIM pathname AS STRING * 67
  43. DIM ireg AS RegTypeX, oreg AS RegTypeX
  44.  
  45. pathname = filename$ + CHR$(0)
  46.  
  47. ireg.ax = &H3D00                'open file
  48. ireg.ds = VARSEG(pathname)
  49. ireg.dx = VARPTR(pathname)
  50. INTERRUPTX &H21, ireg, oreg
  51.  
  52. IF oreg.flags AND 1 THEN        'open error
  53.    FileExists = oreg.ax
  54. ELSE                            'open okay
  55.    ireg.ax = &H3E00             'close file
  56.    ireg.bx = oreg.ax
  57.    INTERRUPTX &H21, ireg, oreg
  58.    IF oreg.flags AND 1 THEN     'close error
  59.       FileExists = oreg.ax
  60.    ELSE
  61.       FileExists = 0            'file exists and accessible
  62.    END IF
  63. END IF
  64.  
  65. END FUNCTION
  66.  
  67.