Visual Foxpro アプリケーションでは、ユーザーの 1 人にエラーが発生します (残りのユーザーには発生しません)。そして、配列が arr[number] ではなく arr(number) の形式で使用されているためだと思います。単一のユーザーでこの奇妙な動作を引き起こす原因を知っている人はいますか?
ありがとう!
Visual Foxpro アプリケーションでは、ユーザーの 1 人にエラーが発生します (残りのユーザーには発生しません)。そして、配列が arr[number] ではなく arr(number) の形式で使用されているためだと思います。単一のユーザーでこの奇妙な動作を引き起こす原因を知っている人はいますか?
ありがとう!
() または [] として適切にバランスが取れている限り、配列参照のどちらの使用も有効です。問題はおそらく、配列が宣言または準備されている上流にあります。あるユーザーが他のユーザーとはまったく異なる方法でプロセスを行っていたこのような歴史的に奇妙なインスタンスと、ビジネスワークフローをデバッグする必要がありました...とにかく、「バイパスされた」プロセスのために、配列はそうではありませんでした作成されたため、強制的に失敗しました。
プロセスの同じ場所で常にクラッシュしますか?
この「1 人の」ユーザーのプロセスでエラー トラップを行うことを強くお勧めします。さらに悪いことに、コードの領域に次のようなものを配置します...
if atc( "PersonsLoginName", sys(0)) > 0
TurnOnMyCustomDebugging() && for this special scenario trapping
endif
さらに、エラー トラップ ルーチンに何があるかはわかりませんが、エラー発生時のメモリのダンプと、ユーザーがその時点に到達した完全な呼び出しスタックを取得できます。それについて助けが必要な場合は、私にも知らせてください。
Foxpro は 2 つを区別しません。これは、 DIMENSIONコマンドとDECLAREコマンドの両方のコメントに実際に記載されています。
実際、ドキュメンテーションは、ある方法または別の方法に厳密に従っているわけではありません。DIMENSION および DECLARE コマンドは、括弧 () を使用して構文を定義します。
DIMENSION ArrayName1(nRows1 [, nColumns1]) [AS cType]
[, ArrayName2(nRows2 [, nColumns2])] ...
ただし、ドキュメントの配列セクションで提供されている例では、角かっこ [] が使用されています。
DIMENSION ArrayName[5,2]
ArrayName[1,2] = 966789
なぜこの質問が 2010 年から「ぶつけられた」のか理解できませんでした。「VFP の基本」のようなもので、詳細が必要なのかもしれません。
答えはすでに良いです。[] と () を使用できます。これは主に好みです。
VFP は実際には、名前が配列を示しているかどうかさえ気にしません。1 つまたは 2 つの整数パラメーター (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の質問によると、[]または()が使用されているという理由だけで、単一のユーザーが異なる結果になることはありません。