- ベストアンサー
ソースコードの簡略化
ただいま、Turbo C++ 2006 を使っているのですが、 以下のコードを簡略化するような処理はありますでしょうか? Edit1->Text = ini->ReadString("String", "Edit1",""); Edit2->Text = ini->ReadString("String", "Edit2",""); Edit3->Text = ini->ReadString("String", "Edit3",""); Edit4->Text = ini->ReadString("String", "Edit4",""); Edit5->Text = ini->ReadString("String", "Edit5",""); 検索はしてみましたが、どうも検索の仕方が下手で、 なかなかいいページが見つかりませんでした・・・。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
FindComponentを使います。 TEdit *ed; #define NUM 5 for ( int i=0; i < NUM ; i++ ) { ed = dynamic_cast<TEdit *>(FindComponent("Edit" + IntToStr(i + 1))); ed->Text= ini->ReadString("String", "Edit" + IntToStr(i+1) ,""); } こんなもんんでどうでしょうか。(チェックしていません。ケアレスミスはご容赦を)
その他の回答 (3)
- tokichim
- ベストアンサー率42% (88/205)
一桁くらいの行数なら簡略化しないほうがいいと思います。 もっと多い、または別のところでも頻繁に使うというなら、 マクロにするか、関数にするかですね。 前者は読みにくくなり、後者は処理速度がちょっぴり落ちます。
お礼
今回は、他のところでも多く 呼び出すつもりなので、 まとめられればいいな、と思っていました。 まとめるとなると、場合によっては 読みづらくなったり等色々とまた 違った点で不便になるかもしれないですね。 回答、ありがとうございました!
- php504
- ベストアンサー率42% (926/2160)
私なら Edit1~Edit5というような変数のつけ方はしないで Edit[0]~Edit[4] のように配列にします これなら100個あってもループで簡単に書けますので
お礼
自分も、何かできることはないかな、と 配列の考えが浮かびましたが、 色々おかしくなってきたので、 とりあえずやめることにしたんです。 しかし、出来るところは配列を使ったほうが 便利な場面もありますね。 回答、ありがとうございました!
- lv4u
- ベストアンサー率27% (1862/6715)
いくらか簡略化(短縮化)したと思える修正ができるかもしれませんが、全体を見直すと、コードは複雑になるでしょう。こういうコードが100行くらいあれば、簡略化して短くなる可能性は大きいですが、5行くらいだとメリットは得にくいですね。 ある処理が単純になったように見えても、それをフルに使いこなすには、内部構造の理解が必要になるのに似ています。なので短くなっても、コード読むのが難しくなり、「簡略化」にならないことがあります。 また、ある部分を簡略化しても、元にあった複雑さは消し去ることができず、他の部分に移動しただけということもあります。これを「複雑さ保存則」なんて言ったりします。 たぶん、期待するようなものは無いとおもいます。
お礼
なるほど・・・ やはり、ただコードを簡潔にすればいい、という 問題でもないみたいですね。 その場に応じてどの書きかたがいいかも 勉強していきたいと思います。 ありがとうございました!
お礼
試しにやってみたところ、 上手くいきました!! 今後もなにかと使えそうで便利ですね。 コードも短くなり、けっこうスマートで 便利です・・・! 希望した通りの動作になり、大変便利だったので 良回答とさせていただきました! 回答、ありがとうございました!