【问题标题】:Conflicting FIELD statements in QB64QB64 中冲突的 FIELD 语句
【发布时间】:2019-05-08 07:15:27
【问题描述】:

运行此代码时,似乎 testfile.000 包含“00”而 testfile.001 包含“99”,那么,为什么这些文件之间没有冲突?它应该抛出一个“重复的定义”吗?

file1$ = "testfile.000"
file2$ = "testfile.001"
OPEN file1$ FOR RANDOM AS #1 LEN = 2
FIELD #1, 2 AS x$
OPEN file2$ FOR RANDOM AS #2 LEN = 2
FIELD #2, 2 AS x$
LSET x$ = "99"
PUT 1, 1
PUT 2, 1
END

【问题讨论】:

  • 即:为什么不给文件#1和文件#2都分配“99”?
  • 在 BASIC(也是 GW Basic)中,字段不能包含相同的字段名称。

标签: qb64


【解决方案1】:

在您的代码中,第二个 FIELD 声明会覆盖第一个 FIELD 声明。在 BASIC 中,FIELD 语句中声明的变量应该不同。

如果你使用下面的代码,你会看到一个有趣的结果:

文件testfile.000将包含1212(只有第一个LSET设置文件#1的字段x$)

文件 testfile.001 将包含 1488(LSET 都设置了文件 #2 的字段 x$)。

file1$ = "testfile.000"
file2$ = "testfile.001"
OPEN file1$ FOR RANDOM AS #1 LEN = 2
FIELD #1, 2 AS x$
LSET x$ = "12"

OPEN file2$ FOR RANDOM AS #2 LEN = 2
FIELD #2, 2 AS x$
LSET x$ = "14"

PUT #1, 1: REM This puts 12 into the 1st file#1 record.
PUT #2, 1

LSET x$ = "88"
PUT #1, 2: REM this puts 12 into the 2nd file#1 record
PUT #2, 2

CLOSE #1
CLOSE #2
END

在 QB 中,您可以使用二进制文件,如下面的代码所示。此模式允许您在多个文件上写入相同的变量。

当您使用此类文件时,您可以完全控制文件中数据的维度和位置。

file1$ = "testfile.000"
file2$ = "testfile.001"
OPEN file1$ FOR BINARY AS #1
OPEN file2$ FOR BINARY AS #2

x$ = "29"
PUT #1, 1, x$
PUT #2, 1, x$

CLOSE #1
CLOSE #2
END

【讨论】:

  • 这向我解释了一些事情。谢谢-:)
  • @eoredson。如果您认为此回复不错,如果您不等待更好的回复,请将其设置为良好回复...再见;)
  • 不,我说这个答案是“答案”。但不要在意。再见!
  • @eoredson,啊,啊,啊……不在乎。 :) 我让你点击应该低于答案数量的检查(应该有一个 v-check 排序)
猜你喜欢
  • 2012-11-06
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多