跳转到内容

Futurebasic/语言/文件规范

来自维基教科书,开放的书籍,开放的世界

文件规范记录

[编辑 | 编辑源代码]

注意  (2008 年 1 月)
虽然 FSSpec 结构代表了当前 FB 用于指定文件和目录的标准,但它已经过时多年,不应该被视为新的 FB 项目的严肃选择。至少有两个现代的 FSSpec 结构的替代方案,分别是

“迁移到 FSRefs 和长 Unicode 名称(来自 FSSpecs)” (Apple 技术说明 TN2078,2003 年 5 月) [1]

以及在以下文件中概述的 FileURL

“typeFSSpec 的消亡:转向 typeFileURL” (Apple 技术说明 TN2022,2001 年 6 月) [2]


修订:2002 年 2 月 (FB^3 版本 6)

文件规范记录 (FSSpecs) 是 FB 久经考验的卷参考号/文件名组合的现代替代方案。你可以按如下方式创建文件规范记录

DIM fs AS FSSpec

文件规范记录在头文件中定义如下

BEGIN RECORD FSSpec
  DIM vRefNum AS SHORT
  DIM parID AS LONG
  DIM name AS STR63
END RECORD

当 FSspec 用作 FILES$OPEN 中的参数时,信息作为单个记录传递给文件处理调用,但你可以按如下方式从记录中提取信息

DIM fs AS FSSPEC
fileName$ = fs.name
parentID& = fs.parID
volRefNum = fs.vRefNum

OS x 与 OS 9 的 volRefNum

[编辑 | 编辑源代码]

OS X 不允许使用旧的 vRefNum/fileName 组合。为了确保你的程序在没有修改的情况下正常工作,FB 运行时会创建一个父 ID 和卷参考号列表,并将列表元素编号
替换为旧的卷参考号。看看下面的调用之间的区别

系统 9
fileName$ = FILES$(_fOpen,_"PICT", "打开图片", refNumVar%)
OPEN "I",#1,fileName$,,refNumVar%

OS X
fileName$ = FILES$(_fOpen,_"PICT", "打开图片", fbElemNum%)
OPEN "I",#1,fileName$,,fbElemNum%

你的程序无需进行更改即可从旧风格的调用迁移到新的调用,并且无需任何额外编码即可成为 OS X 兼容的程序。

从 FB 索引列表信息中提取真实信息

[编辑 | 编辑源代码]

提供了一个实用程序函数,用于从 FB 的索引表中提取真实的卷参考号和父 ID。

FN GetRealVolAndDir(vRefNum%,parentID&)

将伪卷参考号传递给 vRefNum% 参数中的例程。在返回时,真实的卷参考号将被放置在 vRefNum% 变量中,正确的父 ID 将被放置在 parentID& 变量中。

FSMAKEFSSPEC -> FBMakeFSSpec

[编辑 | 编辑源代码]

运行时提供了一个实用程序函数,允许你从各个组件构建文件规范。此函数旨在与所有版本的系统软件一起使用。它的参数与工具箱版本调用的参数相同,但此特定函数足够智能,可以知道它何时处理真实参数,以及何时遇到 FB 替代参数的索引元素编号。

DIM fs AS FSSpec
FN FBMakeFSSpec(inVol%,inDir&,name$, fs )

如果 name$ 参数为空字符串,FB 将返回有关父文件夹的信息。

/* FBtoC 不支持 */

除非你包含以下正确的头文件,否则你将无法使用许多文件实用程序函数(例如 FN GetRealVolAndDir

INCLUDE "Util_Files.incl"

函数 FBMakeFSSpec 在 FBtoC 中不受支持。

华夏公益教科书