FB II Compiler

PG PRO

Debugging

Memory

System

Mathematics

Resources

Disk I/O

Windows

Controls

Menus

Mouse

Keyboard

Text

Fonts

Drawing

Sound

Clipboard

Printing

Communication

ASM

Made with FB

DISK I/O

Create and use alias


Hold it right there, young feller.
The volrefnum (actually a working directory refnum) is a _temporary_ number. It's generated on demand when you call the FILES$ function, and it is only valid until you quit the program (or you call CLOSE FOLDER, whichever occurs first). It is not meant to be a permanent ID number for identifying the folder.
If you need to track a file or folder over time (between runs of your program), then create an alias record for it. Aliases are specifically designed for that purpose.

Rick


To store and use an alias, I suggest Staz's PG functions, MakeAlias and UseAlias. They are in the HFS Util.FLTR. Even if you didn't use PG, you could make a quick one window project and click the HFS button to generate the code, and then snip it.
osErr=FN useAlias(1003,myFSSpec)
The resolve alias (Part of UseAlias) toolbox call seems to give you a volRefNum that you want but alas that is not quite true. It actually is giving you the VolumID. To get the one you want use the following, which Rick Brown so generously gave me. The second parameter will be given to you by the UseAlias. You will need to set up this little puppy for the FN using UseAlias:

DIM useAlias
DIM RECORD fsSpec
  DIM fsVrefNum%
  DIM fsParID&
  DIM 63 fsName$
DIM END RECORD .fsSpec
DIM myFSSpec.fsSpec
LOCAL FN SeeAboutAQuickOpen 'the name of my FN

  osErr=FN useAlias(1003,myFSSpec) ' This will fill the record above.
'<snip>
END FN

then you are ready to use this guy...

_myProcID = _"PGGP"
'-------------------
CLEAR LOCAL
  DIM iopb.52
  DIM OSErr
LOCAL FN GetWDRefNum(volumeID, dirID&,OSErrAddr&)
'Call as follows:
' wdRefNum = FN GetWDRefNum(volumeID, dirID&, @OSErr)
'Returns a Working Directory Reference Number, given a
'_true_ volume reference number (volumeID) and a directory
'ID (dirID&). The wdRefNum should be used in most places
'where FB documentation talks about a "volume reference number".
  iopb.ioCompletion& = 0
  iopb.ioNamePtr& = 0
  iopb.ioVRefNum% = volumeID
  iopb.ioWDDirID& = dirID&
  iopb.ioWDProcID& = _myProcID
  OSErr = FN OPENWD(@iopb)
  POKE WORD OSErrAddr&, OSErr
END FN = iopb.ioVRefNum%

and wdRefNum, the FN result, is the magic number you want. It works for me on alias records created months before. I use it to set the working directory...the folder that is displayed in GetFile or SaveFile.
I hope this gets you where you are going,

George