【问题标题】:Visual Foxpro Array [] or ( )Visual Foxpro 数组 [] 或 ( )
【发布时间】:2010-08-09 13:06:21
【问题描述】:

在 Visual Foxpro 应用程序中,其中一位用户遇到错误(其余用户没有)。我相信这是因为数组以 arr(number) 而不是 arr[number] 的形式使用。有谁知道是什么原因导致单个用户出现这种奇怪的行为?

谢谢!

【问题讨论】:

  • 据我所知,使用[]和()没有区别。它们可以互换使用。
  • 错误信息是什么?

标签: arrays visual-foxpro


【解决方案1】:

Foxpro 不区分这两者。这实际上记录在DIMENSIONDECLARE 命令的注释中。

事实上,文档并没有严格遵循某种方式。 DIMENSION 和 DECLARE 命令用括号 () 定义语法。

DIMENSION ArrayName1(nRows1 [, nColumns1]) [AS cType]
   [, ArrayName2(nRows2 [, nColumns2])] ...

但文档的Arrays 部分中提供的示例使用括号 []。

DIMENSION ArrayName[5,2]
ArrayName[1,2] = 966789

【讨论】:

  • 文档严格遵循一个约定,[]s 之间的东西是可选参数,这与问题无关。
  • @rudi_visser 请再读一遍。如果您查看声明 - 忽略可选参数,它使用括号。然后,如果您查看示例,它使用方括号。
【解决方案2】:

使用数组引用都是有效的,只要它正确地平衡为 () 或 []。问题可能出在声明或准备数组的上游。我不得不调试像这样的历史上奇怪的实例,其中一个用户以与其他用户完全不同的方式处理流程,以及业务工作流程......无论如何,由于一些“绕过”流程,数组不是被创建并因此导致失败。

它总是在进程中的同一位置崩溃吗?

我强烈建议在这个“一个”用户的过程中进行一些错误捕获。更糟糕的是,我会在代码区域中添加一些类似...

if atc( "PersonsLoginName", sys(0)) > 0
   TurnOnMyCustomDebugging()   && for this special scenario trapping
endif 

此外,我不知道你有什么错误捕获例程,但我会在错误发生时获得内存转储以及让用户到达该点的完整调用堆栈。如果您需要这方面的帮助,也请告诉我。

【讨论】:

    【解决方案3】:

    我不明白为什么这个问题从 2010 年开始就被“撞”了。可能是因为它是一种“VFP 基础知识”,需要详细说明?

    答案已经很好了。 [] 和 () 可以使用。这主要是一种偏好。

    VFP 实际上甚至不关心名称是否表示和数组。它可能是一个接受一个或两个整数参数 (1..N) 的函数。但是,如果范围内有一个数组,则它优先。 示例:

    Dimension Dummy[10]
    ? Dummy[5]    && prints .F. - array members are not initialized
    Dummy[2] = 6  && sets array member
    ? Dummy[2]    && prints 6
    Release Dummy && array variable released
    
    ? Dummy[5]    && prints 10 - procedure is called
    * Dummy[2] = 6  && error - variable does not exists
    ? Dummy[2]    && prints 4 - procedure is called
    
    Procedure Dummy(tnDim1)
       Return m.tnDim1 * 2
    endproc
    

    数组或函数(或过程——在VFP过程中和函数也没有区别,都接受参数和返回结果)使用[]或()都没关系。

    根据 OP 问题,单个用户不会因为使用 [] 或 () 而得到不同的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多