INIファイルの操作で

解決


kokoa  2003-04-20 00:54:08  No: 3365

INIファイルのところで、
if( false == IniFile->SectionExists(INI_SEC_GENERAL) ){
        IniFile->WriteInteger(INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORT);
}
という風に書かれているプログラムを発見いたしました。

こういう風な書き方もできるものなのでしょうか?
それともどこかで#defineとかやってるのでしょうか?


たかみちえ  URL  2003-04-20 01:14:12  No: 3366

ん、少し難しそうに見えますけど、これは普通の構文だと思いますよ。
if文は要するに、結果がBooleanであればなんでもいいですから。

  まあ、いったん変数に保存するなりして行を増やすのと、
こうやって短く済ますのと、どっちが見やすいか  ということだと思います。
(わたしはこういう風にやりますけど)


とおりずがり  2003-04-20 04:05:04  No: 3367

「 == 」「 -> 」、「 { 」、「 } 」はC言語?


にしの  2003-04-20 20:15:46  No: 3368

C++Builderですか。
でも冗長ですね。この場合、if文はいらないでしょう。
IniFile->WriteInteger(INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORT);
だけで、DEF_EMEET_SVRPORTの値が既定値(INIにセクションがなかろうが、キーがなかろうが、この値)になればいいわけですから。


kokoa  2003-04-22 23:35:34  No: 3369

ちょっとレス遅くなりすいません。
みなさん、貴重なレスありがとうございました。

環境はC++ Bulder5です。(忘れてました。ペコリ

>まあ、いったん変数に保存するなりして行を増やすのと、
>こうやって短く済ますのと、どっちが見やすいか  ということだと思いま
>す。

この意味がいまいちわかりません。もしよろしければ、詳しく教えていただけないでしょうか?

あと、INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORTといううような書き方はどういうことなんでしょうか?これは#defineなんかでどっかで定義しているのでしょうか?


にしの  2003-04-23 00:32:35  No: 3370

#defineなのか、単純な変数の定義なのかはソース全体をみないと、誰もわかりません。

> この意味がいまいちわかりません。もしよろしければ、詳しく教えていただけないでしょうか?
単純に、「人によって書き方はまちまちだけれど、結果は同じ」ということでしょう。

if( false ==  ){
}
と書かずに、
bool t = IniFile->SectionExists(INI_SEC_GENERAL);
if(! t){
        IniFile->WriteInteger(INI_SEC_GENERAL, INI_KEY_GEN_EMEET_SVRPORT, DEF_EMEET_SVRPORT);
}
と書いた方が見やすい場合もあります。

ソースの書き方なんて、人それぞれですからあまり気にするほどでもないですよ。
よほど汚いソースを書かない限り。


にしの  2003-04-23 00:33:24  No: 3371

失敗。切り取ってしまいました。
if( false ==  ){
は、
if( false == IniFile->SectionExists(INI_SEC_GENERAL) ){
の誤りです。


kokoa  2003-04-24 00:42:57  No: 3372

なるほど。

If(IniFile->SectionExists(INI_SEC_GENERAL)==falase)なんて書き方はよくないのでしょうか?


にしの  2003-04-24 01:00:03  No: 3373

> よくないのでしょうか?

どういう基準での話でしょうか。
よくない場合はコンパイラがエラーまたは警告を出してくれますので、それで確認してください。


kokoa  2003-04-24 03:05:50  No: 3374

いえいえ、書き方としてまずいのでしょうか?
見にくいとか、あんまり好まれないとか。


にしの  2003-04-24 03:16:50  No: 3375

それはもう、好みの問題だと思いますよ。
1つ気になったのですが、ifをIfに#defineしておくのは見づらいというより、バグが潜む危険性があるのでやめた方がよいです。単なる記述ミスかもしれませんが。

たとえば、僕は
if(a==1){
}
と書かずに、
if(a==1)
{
}
と、{の位置をifにそろえます。
# K&R本では確かifの後ろに{があったと思います

計算式がとても長い場合など、定数部を忘れてしまわないようにたとえば、
if(0==(a+b)*(c-d))
と書くこともあります。ただ、ソースの中で一定にした方がよいでしょう。
# これも、場合によってはOKです

そんなに、気にするほどでもないと思いますけどねぇ。

#include<stdio.h>
#include<stdlib.h>
int main(void){printf("hello.\n");return 0;}
これでも動きますし、
#include<stdio.h>
#include<stdlib.h>
int
main(
void
)
{
printf(
"hello.\n"
);
return
0;
}
これでも動くわけですから、あとは自分で見て、読みやすい方法で書けばよいと思います。


kokoa  2003-04-24 03:34:19  No: 3376

ふむふむ、忘れないように最初に書くというのが一番理解できました。

すごく気になっていたのでとても、助かりました。
本当にありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加