喫茶XRAYトップページ


[10676] こんな事できますか?返信 削除
2017/1/17 (火) 00:29:13 KON
構造体の配列で特定のメンバーだけを抽出した配列を取得する方法なのですが。

TSampleRecord = packed record
  aaa : Integer;
  bbb : Double;
  ccc : String;
  ddd : Cardinal;
end;

SampleRecord : Array of TSampleRecord;  // ← これにはデータが入っているとします。

この構造体の配列を、

  aaa : Array of Integer;  // ← 配列長はSampleRecordと同じとします。

に格納する方法なのですが、

for lc1 := 0 to Length( SampleRecord ) - 1 do
  aaa[ lc1 ] := SampleRecord[ lc1 ].aaa;

という様に、私にはfor文でぶん回して1つ1つ代入してく方法しか思い付きません^^;
こうしたいのなら、構造体の設計の時点で誤りなのかな^^;


[10677] Re:こんな事できますか?返信 削除
2017/1/17 (火) 08:13:45 Mr.XRAY
> という様に、私にはfor文でぶん回して1つ1つ代入してく方法しか思い付きません^^;

私もです.
配列要素の初期化なんかも,たまに質問を見かけることがありますが,
ループで回して実行するのが地道ですが確実な気がします.

たとえ一発で実行するメソッドのようなのがあったとしても,結局は
そのメソッドの内部ではループ処理というのが多いようですから.


[10678] Re2:こんな事できますか?返信 削除
2017/1/17 (火) 21:18:22 KON
▼ Mr.XRAYさん

> たとえ一発で実行するメソッドのようなのがあったとしても,結局は
> そのメソッドの内部ではループ処理というのが多いようですから.


そうですね^^;
何故、配列にしたかったかと言うと、
Mathユニットの MaxIntValue ( 配列の最大値を求める ) を利用したかっただけなんです^^;
結局それでもループしないと判らない事ですものね。

Mr.XRAY様、有難う御座います^^

INCM/CMT
Cyclamen v3.82