跳转到内容

Futurebasic/语言/文件规范

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

文件规范记录

[编辑 | 编辑源代码]

注意  (2008 年 1 月)
虽然 FSSpec 结构代表了当前的 FB 指定文件和目录的标准,但它已经过时多年,不应该被考虑用于新的 FB 项目。FSSpec 结构至少有两种现代替代方案,即在

“从 FSSpecs 迁移到 FSRefs 和长 Unicode 名称” (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 vs 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 中不受支持。

华夏公益教科书