KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q45423: Example to Get and Set File Attributes in QuickBASIC

Article: Q45423
Product(s): See article
Version(s): 4.00 4.00b 4.50
Operating System(s): MS-DOS
Keyword(s): ENDUSER | B_BasicCom | mspl13_basic
Last Modified: 20-DEC-1989

The program below demonstrates how to use CALL INTERRUPT to get and
set the attributes of files in MS-DOS.

This information applies to QuickBASIC Versions 4.00, 4.00b and 4.50,
to Microsoft BASIC Compiler Versions 6.00 and 6.00b, and to Microsoft
BASIC PDS Version 7.00.

The following program is FILEATT.BAS:

DECLARE SUB showattributes (status AS INTEGER)
' $INCLUDE: 'qb.bi'
' For QBX.EXE and BC.EXE in BASIC PDS 7.00 use the include file 'QBX.BI'

CONST SETREADONLY = &H1
CONST SETHIDDEN = &H2
CONST SETSYSTEM = &H4
CONST SETARCHIVE = &H32
DIM inregs AS RegTypex, outregs AS RegTypex
CLS
INPUT "Enter File Name (with full pathname): "; filename$

' add CHR$(0) to make ASCII Z string
filename$ = filename$ + CHR$(0)

inregs.ax = &H4300                    ' get file attributes
inregs.dx = SADD(filename$)
'   For BC.EXE and QBX.EXE for BASIC PDS 7.00 add the following line:
' inregs.ds = SSEG(filename$)

CALL INTERRUPTX(&H21, inregs, outregs)
showattributes outregs.cx

' set hidden attribute
inregs.ax = &H4301                    ' set file attributes

' mask off the volume labels directory and reserved bits
setstatus% = outregs.cx AND &H27

setstatus% = setstatus% OR SETHIDDEN ' set hidden attribute bit
inregs.cx = setstatus%
CALL INTERRUPTX(&H21, inregs, outregs)
showattributes outregs.cx

SUB showattributes (status AS INTEGER)
  PRINT
  PRINT "File Attributes Set"
  PRINT "-------------------"
  IF status% AND SETREADONLY THEN PRINT "read-only"
  IF status% AND SETHIDDEN THEN PRINT "hidden"
  IF status% AND SETSYSTEM THEN PRINT "system"
  IF status% AND 8 THEN PRINT "volume label"
  IF status% AND 16 THEN PRINT "directory"
  IF status% AND SETARCHIVE THEN PRINT "archive"
END SUB

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.