for文のループとループに使っている変数について 2008/12/31

for文のループでちょっとはまってしまったので書き留めておきます。 Delphi7 Delphi2007で確認しています。

まずは以下のソースをみてください。

var
 s1 : string;
 cnt : integer;
begin
 try
 for cnt := 0 to Memo1.Lines.Count -1 do begin
  s1 := Memo1.Lines[cnt];
  Memo1.Lines[cnt] :=' '+s1 + '<br>';
 end;

 cnt := Memo1.Lines.Count;
    ・
    ・
    ・

Tmemoのデータを読んでカウントさせるためのプログラムです。

一番下に「cnt := Memo1.Lines.Count;」というのがあります。Tmemoカウントの値(行数)を変数cntに代入しているわけですが

これがなくても上のfor文でカウントの値が変数cntに入っていると思っていたのですが間違っていました。

カウントの値はここでは反映されておらず、カウント数を使いたい場合上は、のようにあらためて「cnt := Memo1.Lines.Count;」

を記述してやる必要があるようです。

もし、「cnt := Memo1.Lines.Count;」の記述を省いてしまうと警告で「不定な値」といわれてしまいます。

変数には1308424なんてでたらめな数値がはいっていました

back