ページ 11

ReadMe作成ツールを作りました

Posted: 2010年4月10日(土) 02:33
by 紅葉
ReadMeを作る際に役に立ちそうなフリーソフトを作ってみました。
日頃、こちらの掲示板の方々にはお世話になっているので宜しければお使い下さい。

また質問になってしまって大変申し訳ないのですが
このフリーソフトの設定ファイル(ユーザー名等)をあらかじめ登録させておいて
次回作る際に簡略化出来るような仕様にしようとしております。

// 設定ファイル名 config.ini
ソフト名 = テスト
作者名 = 紅葉
E-mail = momiji@momiji

このように記述し(ユーザが使い易ければ別の方式でもOK)
起動時に自動的に入力されているようにしたいです。
ファイルの読み込みなどはわかるのですが
どの様に分ければよいのかがわかりません。

もし宜しければで構いませんのでご教授願えないでしょうか?

Re:ReadMe作成ツールを作りました

Posted: 2010年4月10日(土) 03:53
by Ma
>どの様に分ければよいのかがわかりません。

質問の意図がよくわかりません。
行ごとで読み込んでいって、=の左辺が規定の文字列と一致すれば
右辺の文字列を起動時に左辺に合う規定のテキストボックスにいれればいいのではないでしょうか?

Re:ReadMe作成ツールを作りました

Posted: 2010年4月10日(土) 09:09
by たいちう
そのような場合は、GetPrivateProfileStringを使うのが一般的です。

http://msdn.microsoft.com/ja-jp/library/cc429779.aspx

Re:ReadMe作成ツールを作りました

Posted: 2010年4月10日(土) 09:42
by dic
似たようなソフト作ってるのでありがたく使わせていただきます

そこで、使っててちょっとアレ?っとおもったのですが
作成される内容が
≪著作権および免責事項≫
本ソフトはフリーソフトです。自由にご使用ください。
なお,著作権は作者である "ソフト名" が保有しています。
だったんで 著作者名がきてほしいところにソフト名が
きてたんで、報告しておきます

Re:ReadMe作成ツールを作りました

Posted: 2010年4月10日(土) 18:14
by 紅葉
皆様ご回答ありがとうございます。

>>Ma様

行ごとで読み込むことは可能なのですが
どの様に比較?といいますか文字列を切りだせばいいかが
理解できません。
ご教授願えないでしょうか?

>>たいちう様
GetPrivateProfileStringについて調べてみたのですが
構成ファイルは

softname = テスト
usename = 紅葉

の様に英字で書くのが一般的なのでしょうか?
この関数の使い方などを調べてみたのですがイマイチわかりません・・・。

>>dic様
ご指摘ありがとうございます。
単純なミスをしておりました。
修正したものを添付させて頂きます。

Re:ReadMe作成ツールを作りました

Posted: 2010年4月10日(土) 19:39
by Ma
GetPrivateProfileString
を使うなら
http://okwave.jp/qa/q207935.html
など、参考に。

私が言っていた方法は、= の位置を見つけ出して、substr で=から左側の文字列のみをすいだし、
その文字列と規定の指示文(ソフト名等)と比較し、一致すれば右辺の文字列を使います。
右辺の文字列も同様にsubstr 等で、=の文字位置よりも右側を(=含まないで)すいだせばいいわけです。

Re:ReadMe作成ツールを作りました

Posted: 2010年4月11日(日) 17:00
by 紅葉
ご回答ありがとうございます。
確かに
this->textBox1->Text = this->textBox1->Text->Substring(2,2);
のようにすれば文字列を取得できるかもしれませんが

>>= の位置を見つけ出して、substr で=から左側の文字列のみをすいだし、
ここの処理の書き方がわかりません・・・。
他の言語ですとStrPosなどがあるみたいなのですが
今回使っているVC++ではそれらしい関数がみあたりません・・・。

Re:ReadMe作成ツールを作りました

Posted: 2010年4月11日(日) 18:03
by Justy
>ここの処理の書き方がわかりません・・・。
>ではそれらしい関数がみあたりません・
 Stringクラスには IndexOfがありますが、これでは不足でしょうか?

String.IndexOf メソッド (Char) (System)
http://msdn.microsoft.com/ja-jp/library ... S.80).aspx

String.IndexOf メソッド (String) (System)
http://msdn.microsoft.com/ja-jp/library ... S.80).aspx

Re:ReadMe作成ツールを作りました

Posted: 2010年4月11日(日) 20:03
by 紅葉
皆様のお陰で実装が出来ました。
無理やり感が否めなくて申し訳ないのですが
使って頂ければ幸いです。

またアイコンも見やすいものに変更しました。
添付させて頂きます。
try{
                System::IO::StreamReader^ sr = 
                gcnew System::IO::StreamReader("config.ini",System::Text::Encoding::GetEncoding(932));
                sr->ReadLine();
                String^ Item;
                while((Item = sr->ReadLine()) != nullptr){
                    int Num = Item->IndexOf("=");    // 文字列検索 
                    if(Item->IndexOf("none") == -1){
                        if(Item->IndexOf("SoftName") != -1) this->textBoxSoftName->Text = Item->Substring((Num+1));
                        if(Item->IndexOf("SoftName") != -1) this->textBoxSoftName->Text = Item->Substring((Num+1));
                        if(Item->IndexOf("UserName") != -1) this->textBoxUserName->Text = Item->Substring((Num+1));
                        if(Item->IndexOf("Mail") != -1)        this->textBoxMail->Text = Item->Substring((Num+1));
                        if(Item->IndexOf("URL") != -1)        this->textBoxURL->Text = Item->Substring((Num+1));
                        if(Item->IndexOf("Move") != -1)        this->textBoxMove->Text = Item->Substring((Num+1));                        
                        if(Item->IndexOf("Note") != -1)        this->textBoxNote->Text = Item->Substring((Num+1));
                    }
                }
                sr->Close();
            }catch(Exception^){
                //MessageBox::Show("初期設定ファイルを作成します。", "メッセージ");
            }