名前 題名 ▼ takiさん > う〜ん、手続き内で動的配列の数を変更すると Ver 指定する必要があるようです。 > Ver が無いと100〜109しか表示されません。 > > type > TTestAry = array of integer; > > procedure ABC(var buf:TTestAry); > var > i,len,count:integer; > begin > len := Length(buf); // 今のサイズを得る > count := 0; > > // 100〜200のデータをbufにセットする処理 > for i := 100 to 200 do begin > buf[count] := i; > inc(count); > > // 配列の数を増やす --------- > if count >= len then begin > len := len + 10; // とりあえず10増やす > SetLength(buf,len); > end; > // -------------------------- > end; > > // 終了前に配列の数を実際の数に揃える > SetLength(buf,count); > end; > > procedure TForm1.Button1Click(Sender: TObject); > var > Abuf:TTestAry; > i,len:integer; > begin > // 動的配列設定 > SetLength(Abuf,10); // とりあえず10確保 > > // 手続きを呼び出す > ABC(Abuf); > > // 結果の表示 > len := Length(Abuf); > for i := 0 to len - 1 do begin > ListBox1.Items.Append(inttostr(Abuf[i])); > end; > end; > > > ListBox1.Items.Append()のように使えたらと思ったのですが、 > どうもちがうようです。 > > やはり呼び出し側でSetLength(Abuf,10000)とかにし、ABCを関数にして > 実際に処理した数を返すようにするのが正解かもしれません。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link