配列のインデックスを動的に変化させるには?

解決


ドイチェの星になれ  2007-05-30 11:28:39  No: 26361  IP: 192.*.*.*

いつもお世話になっております。

配列のインデックス(最大数?)を処理中に動的に設定したいのですが、どうしたらいいのでしょうか?
具体的にはDBを読み、その件数だけ配列を持ちたいです。

var
  date_name : array[1..10] of String;

の最大数10件を動的に変更したいと思っています。
よろしくお願いします。

編集 削除
igy  2007-05-30 11:59:51  No: 26362  IP: 192.*.*.*

ちなみに、TListやTStringListなどを使うのではだめですか?

編集 削除
Ru  2007-05-30 12:03:27  No: 26363  IP: 192.*.*.*

ヘルプで
『動的配列』
で検索して,その内容では不可能ですか?

編集 削除
どいちぇの星になれ  2007-05-31 09:24:48  No: 26364  IP: 192.*.*.*

>>igy様
レスありがとうございます。
Ru様がずばりなレスをいただきましたので
レス頂いた内容は今後の知恵(TListやTStringList等も使える!)として覚えさせていただきます。

>>Ru様
レスありがとうございます。
ずばりDelphiのヘルプに載っていました。
動的配列という言葉が思い浮かばずに質問して申し訳ございません。

解決方法は動的配列には「SetLength(「配列名」、「割り当てるメモリ容量」)」を使えば可能。

ヘルプを見て無事正常に動作しました。

今後ともよろしくお願いします。


以下簡潔ですが解決ソースです。

---------------------------------------------

var
  data_name : array of String;  //データ名称を保持する配列
  i         : Integer;          //配列の添字カウンター
begin
  
  // DB検索処理
  Query1.Open;

  //データカウントだけ配列にメモリを割り当てる
  SetLength(date_name,Query1.RecordCount);

  //配列の添字は常に0から始まるため
  i := -1;
  
  while Query1.Eof = False then
  begin
    i := i + 1;
    
    //配列に検索したデータを入れていく
    date_name[i] := Query1.FieldByName('data_name').AsString
    Query1.Next;
  end
  
  Query1.Close;

end;

---------------------------------------------

レスありがとうございました。

編集 削除
ドイチェrの星になれ  2007-05-31 11:58:52  No: 26365  IP: 192.*.*.*

解決し忘れていました。

編集 削除