Delphi相談室(超初心者用)その10

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:04/02/12 20:42
record型でデータを定義してプログラムを作りました。
Newでいくつも作成して、ポインターをTListに登録して
使い回すのですが、これをclassに変えた場合、Createで
いくつも作成するまではいいのですが、管理するには
何を使えばいいのでしょう?
TStringListとかで、AddObjectですかね?
作製したクラスのポインタをTlistで管理。
954デフォルトの名無しさん:04/02/12 21:02
【質問】
質問させてください。ある桁数を指定すると、
その桁まで総当たりで順番に処理するには、どうすればいいのでしょうか?
例えば3桁を指定した場合、
$00, $01, $02,・・・ $ff,
$00 $00, $00 $01, $00 $02,・・・ $ff $ff,
$00 $00 $00,$00 $00 $01,$00 $00 $02,・・・,$ff $ff $ff
というように処理出来るようにしたいのですが。
n桁の場合どうしたらいいのでしょうか?
何か巧いやり方があったらご教授願いますm(_ _)m
955デフォルトの名無しさん:04/02/12 21:04
>>953
サンクスです。
>>945
> TListで項目を削除すると、そこはnilになって残りますが

ちゃんと詰められるはずだけど?
>>943

フォーカスを移さないように SpeedButton を使って

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if StringGrid1.ControlCount = 1 then
    TInplaceEdit(StringGrid1.Controls[0]).SelText := 'AAA';
end;
>>954
> その桁まで総当たりで順番に処理するには

もうちょっと、やりたいことを詳しく説明して
>>954
>>958に同意だが、たぶん再帰になるかなぁ。
>>952
TObjectListを使うと多少楽。

>>954
for 桁数 := 1 to 桁数の上限 to
 for 値 := 0 to (1 shl (桁数 * 8))-1 do
  色々な処理;
メインUNITと複数のCPUUNITを作って
一つのメインUNITから、複数のCPUUNITへ盤面情報として
配列を直接引数として渡したいのですがうまくいきません。

固定配列をメインとCPUで宣言しても共通が無いと言われますし
USES節で片方向や双方向の参照を試してもうまくいきませんでした。

配列を引数にするには型宣言が必要。
メインのインターフェイスで配列型宣言する→CPUUNITのインターフェイスでプロシージャ宣言に型が使えない。
CPUUNITで配列型宣言する→メインのインターフェイスで型宣言ができる
→が、CPUUNITが複数になりCPU1、CPU2、CPU3などに増えた場合、宣言が重複する。

こういうやり方がおかしいのでしょうか、それとも他にもっといいやりかたがあるのでしょうか?
宣言専門の Unit を作って、それを
各 UNIT から uses するという頭の
悪い方法もある。
>>961
俺はある程度プログラムサイズが大きくなったら、複数のユニットで共有する
型宣言や定数宣言だけをまとめて、DefinitionsUnit.pasとして、それを
参照するようにしてるけど。
964963:04/02/12 23:11
>>962 なんで俺が頭が悪いこと知ってるんだ?おまえ何者?
>>963
VCLなんかもそんな風に処理してるんだろうけど、
スマートなようでスマートじゃ無い気がしてきて、
気になって気になってどうしようもない。
966961:04/02/12 23:41
お答えありがとうございました。やっぱりそれが一番簡単ですね。

・・・自分でも思いついてたけど、なんとなく
それだけは止めておこうと思ったのに_| ̄|○

素直にParamUnitを立ち上げることにします。
967943:04/02/12 23:59
>>957
レスありがとうございます。こんな簡単にできるんですね・・・衝撃です。
早速やってみます。多謝です!

あと,947様。ご気分を害してしまって申し訳ありませんでした。
968952:04/02/13 00:15
オブジェクトの解放のことで教えて下さい。
たとえば、レコード型のデータを複数のList系のオブジェクトに、
addobject等で入れた時、入れた分だけDisposしてやらないと
いけませんよね?
レコード型をclassに変えた場合って、Createした分Freeしてやるだけで
いいんですかね?
>>968
そうだけど、TObjectListの利用も検討すれ。
970952:04/02/13 00:31
>>969
TObjectListを使っては見たんですが、
CombBoxとかにAddObjectもしたんです。
で、ポインターの感覚でCombBox、TObjectList
両方Freeしようとしたら、エラーが出たんで。
片一方(TObjectList.Freeしか試してないですが)なら
そのまますんなりだったんで、レコード型との
違いを確認したかったんです。
ありがとうございました。
>>970
>で、ポインターの感覚でCombBox、TObjectList
>両方Freeしようとしたら、エラーが出たんで。

TObjectListなら、標準状態ならTObjectListから削除したときに、勝手にFreeしてくれるから、
*両方ともも* Freeする必要はありません。DeleteさえすればOK。
ともも、だって。すまん。

あと次スレよろしく。
「くだすれDelphi超初心者用 その11」で。
>>1に、コードを全く書かずに、「○○○することは出来ますか?」という質問は
禁止する、とのことを書いてくれるといいっぽい。
あとは、現状の>>1のコピーでいいでしょう。現スレへのリンクの追加も忘れずに。
>>972
それ、オレが書いた時は「仕切るな」って書かれただけだぞ。
>>973
500くらいで言うか、970で言うかの違いだろ。
>>974
お前は黙ってろ
>>962

是非、頭のいい方法も教えてくれ。
>>977 瞬発力のある笑いだなw
>>977
「どうせ『また騙されたのか?系』だろ」と思ったが…。
ワラタ。
980976:04/02/13 01:36
>>977

なるほど、たしかに頭よさそうだね。
Delユーザにはほんと頭いいのが多いね。
(´-`)。o ○ (ユーモアの無いヤツはこれだから…)
982976:04/02/13 01:51
>>981
Delユーザにはほんとユーモアがあって頭いいのが多いね。
勉強になるわ、マジで
次スレ立てますた。よろしく。

Delphi相談室(超初心者用)その11
http://pc2.2ch.net/test/read.cgi/tech/1076610073/
うーん
二つできてるぞ。
985別スレの1:04/02/13 04:33
あっ、しまった!
こっちに書いておくの忘れた、スマソ。

くだすれDelphi(超初心者用)その11
http://pc2.2ch.net/test/read.cgi/tech/1076609666/
ウザ
重複キター?
前スレに誘導レスもできないなんて、Delユーザはほんと頭いいね。


つーか、立てる前に宣言しろよ。
重複した奴も立てる直前で調べろよ。
990デフォルトの名無しさん:04/02/13 19:23
よし たてるぞー(w
>>990
勘弁して・・・というか氏ねよ。
992デフォルトの名無しさん:04/02/13 20:47
Del8のキャンペーン申し込んで、
日本語版来た人いる?
993デフォルトの名無しさん:04/02/13 20:50
記念カキコ v(^-^*)
ageずに埋めれ
埋め
996デフォルトの名無しさん:04/02/13 20:58
(゚д゚) <シメジ
997あぼーん:あぼーん
あぼーん
良スレの予感
999デフォルトの名無しさん:04/02/13 21:08
>>998
激しく同意
これからのスレッドの流れに期待だな。
1!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。