喫茶XRAYトップページ

[スレッド全体
]

[965] いまさら人に聞けないFor〜文 (って聞いてるし)返信 削除
2006/10/24 (火) 16:43:23 Syake
こんにちは、マスター
いやはや、私の常識=世間の非常識なのかな?

//-------------------------------------
var
 i :Integer;
begin
 for i := 0 to Length(arrData) - 1 do
 begin
  if arrData[i].FXXX = XXX then
  begin
   ・・・
//-------------------------------------
これって、普通ですよね。
カウンター変数をカウンター内で使うって事は別段
いかん事ではなかったと解釈しとります。

ところで
Type TarrData = array[1..31] of TXxxxx;
てのがあったとして下記の関数内手続きが存在する場合
//-------------------------------------
procedure XXXXXXXXX(arrData :TarrData);
var
 i :Integer;
begin
 for i := 1 to 31 do
 begin
  if arrData[i].FFLG then
  begin
   arrrData[i].FXXX := XXXX;
   ・・・
//-------------------------------------
て、すると iが31→1へとカウンター内で変化している。
たとえばarrrData[15].FFLG := True で他のarrData[X].FFLG := False
だった場合、i = 17 でTrueと判定する。(15番目だから?)
でも、判定文以外はi = 17で同様に見ているもんだから、当然正しい
結果は返さない。
この関数内手続きが呼ばれる前に関数内でバグってておかしくなってる
のか? でも、そんな事あるのかな?
取り急ぎ、
//-------------------------------------
procedure XXXXXXXXX(arrData :TarrData);
var
 i,intIndex :Integer;
begin
 intIndex := 1;
 for i := 1 to 31 do
 begin
  if arrData[intIndex].FFLG then
  begin
   arrrData[intIndex].FXXX := XXXX;
   intIndex := intIndex + 1;
//------------------------------------
で、しのいだのですが、どうも????



[966] Re:いまさら人に聞けないFor〜文 (って聞いてるし)返信 削除
2006/10/24 (火) 20:24:40 Mr.XRAY
▼ Syakeさん

> Type TarrData = array[1..31] of TXxxxx;
> てのがあったとして下記の関数内手続きが存在する場合
> //-------------------------------------
> procedure XXXXXXXXX(arrData :TarrData);
> var
>  i :Integer;
> begin
>  for i := 1 to 31 do
>  begin
>   if arrData[i].FFLG then
>   begin
>    arrrData[i].FXXX := XXXX;
>    ・・・
> //-------------------------------------
> て、すると iが31→1へとカウンター内で変化している。
> たとえばarrrData[15].FFLG := True で他のarrData[X].FFLG := False
> だった場合、i = 17 でTrueと判定する。(15番目だから?)


えっ?、どこか他でarrrDataを操作しているわけじゃないんですよね。
ないか。だってintIndex変数を使用すればOKなんだから。
う〜む。わからん。
変数iがどこかで...


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82