Microsoft KB Archive/36392: Difference between revisions
m (Text replacement - ">" to ">") |
m (Text replacement - "&" to "&") |
||
Line 79: | Line 79: | ||
IF INSTR(FolderName$,":") = 0 THEN | IF INSTR(FolderName$,":") = 0 THEN | ||
' Set up for current volume/folder | ' Set up for current volume/folder | ||
Ptr& | Ptr& = &H352 'pointer to default VCB | ||
Vol& | Vol& = PEEKL(Ptr&) 'Default VCB | ||
vRefNum% = PEEKW(Vol& | vRefNum% = PEEKW(Vol& + 78) 'Volume reference number | ||
path$ = "" | path$ = "" | ||
GetDirName vRefNum%, path$ | GetDirName vRefNum%, path$ | ||
Line 87: | Line 87: | ||
ELSE 'Entire volume:path specified | ELSE 'Entire volume:path specified | ||
Vol$ = LEFT$(FolderName$, INSTR(FolderName$,":")-1) | Vol$ = LEFT$(FolderName$, INSTR(FolderName$,":")-1) | ||
Ptr& | Ptr& = &H358 'first VCB | ||
Vol& | Vol& = PEEKL(Ptr&) | ||
Found% = 0 | Found% = 0 | ||
WHILE Vol& | WHILE Vol& <> 0 AND Found% = 0 | ||
Vol& | Vol& = PEEKL(Ptr&) | ||
Ptr& | Ptr& = Vol& | ||
IF Vol& | IF Vol& <> 0 THEN | ||
DirID& | DirID& = 0 : n$ = "" | ||
vRefNum% = PEEKW(Vol& | vRefNum% = PEEKW(Vol& + 78) | ||
GetCatInfo IOPB%(0),n$,DirID& | GetCatInfo IOPB%(0),n$,DirID&, vRefNum% | ||
IF UCASE$(n$) = UCASE$(Vol$) THEN Found% = 1 | IF UCASE$(n$) = UCASE$(Vol$) THEN Found% = 1 | ||
END IF | END IF |
Latest revision as of 14:14, 21 July 2020
Article ID: 36392
Article Last Modified on 11/21/2006
This article was previously published under Q36392
SUMMARY
This article contains a sample program that demonstrates how to use HFSDispatch to create a folder with Microsoft QuickBASIC version 1.00 for the Apple Macintosh.
MORE INFORMATION
The program below will create a new folder. If no volume or path is specified, the folder is placed in the current folder on the current volume. If a path is specified, it must be a full pathname, including volume name and parent folder names. The last folder name in the path specification is the one that will be created; all others in the path must already exist.
If there is an error creating the folder, the error code will be returned in the variable ErrCode%. The error codes are as follows:
0 No error, folder was created 1 Volume specified is not currently mounted Other Error in creating the folder. This is the error code returned by the PBDirCreate ROM routine. See "Inside Macintosh," Volume 4 for more information about these error codes.
This program creates the folder by properly establishing a parameter block (stored here in IOPB%()), and making a call to HFSDispatch, call number 6. For more information regarding the I/O Parameter Block (IOPB), see "Inside Macintosh", Volume 4.
The following is a code example:
'-------------------------------------------------------- ' DirCreate ' Copyright 1988 Microsoft Corp. ' ' This program is for personal use only. It may not be ' redistributed in any form, electronic or mechanical, for any ' purpose, without the written permission of Microsoft Corp. ' '-------------------------------------------------------- ' ' Subprogram which will create the specified folder name on ' either the current volume (in the current folder) or on the ' specified volume (in the specified folder). ' '-------------------------------------------------------- INPUT "Please enter the folder to create:",fld$ DirCreate fld$, ECode% WHILE MOUSE(0)<>1:WEND END SUB DirCreate (FolderName$, ErrCode%) STATIC DIM IOPB%(120) IF INSTR(FolderName$,":") = 0 THEN ' Set up for current volume/folder Ptr& = &H352 'pointer to default VCB Vol& = PEEKL(Ptr&) 'Default VCB vRefNum% = PEEKW(Vol& + 78) 'Volume reference number path$ = "" GetDirName vRefNum%, path$ NewFolder$ = path$ + ":"+FolderName$ ELSE 'Entire volume:path specified Vol$ = LEFT$(FolderName$, INSTR(FolderName$,":")-1) Ptr& = &H358 'first VCB Vol& = PEEKL(Ptr&) Found% = 0 WHILE Vol& <> 0 AND Found% = 0 Vol& = PEEKL(Ptr&) Ptr& = Vol& IF Vol& <> 0 THEN DirID& = 0 : n$ = "" vRefNum% = PEEKW(Vol& + 78) GetCatInfo IOPB%(0),n$,DirID&, vRefNum% IF UCASE$(n$) = UCASE$(Vol$) THEN Found% = 1 END IF WEND IF Found% = 0 THEN PRINT "Volume not mounted!" ErrCode% = 1 EXIT SUB END IF NewFolder$ = FolderName$ END IF pasFolder$ = "" B2PStr NewFolder$, pasFolder$ POKEW VARPTR(IOPB%(0))+22, vRefNum% POKEL VARPTR(IOPB%(0))+18, SADD(pasFolder$) HFSDispatch 6,IOPB%(0) ErrCode% = PEEKW(VARPTR(IOPB%(0))+16) END SUB
Additional query words: MQuickB
Keywords: KB36392