リソースの文字列(テキストファイル)の読み出し
リソースの文字列(テキストファイル)の読み出し
こんにちは、度々失礼いたします。滝の上のマスカットです。
リソースからの画像の読み出しが終わって効率よく、組んでいたのですが。
テキストファイルを使って、コメントを流してみたいなと、思うようになりました。
そこで、いろいろなサイトを見て回ったのですが、LoadResourceやLoadString
というものは見つかったのですが、その使い方がいまいちわかりません。
どう利用したらいいのでしょうか。
リソースからの画像の読み出しが終わって効率よく、組んでいたのですが。
テキストファイルを使って、コメントを流してみたいなと、思うようになりました。
そこで、いろいろなサイトを見て回ったのですが、LoadResourceやLoadString
というものは見つかったのですが、その使い方がいまいちわかりません。
どう利用したらいいのでしょうか。
Re:リソースの文字列(テキストファイル)の読み出し
>テキストファイルを使って、コメントを流してみたいなと、思うようになりました。
ニコニコ動画のような文字の処理ですか?
ニコニコ動画のような文字の処理ですか?
Re:リソースの文字列(テキストファイル)の読み出し
説明が足りなくてすいません。
RPGみたいなのを作っていて、画面の下のほうにコメントを出せたらいいな、と思っています。
表示方法等は、わかっています。
わからないのは、リソースから、テキストファイルを読み込む作業です。
ちなみに、読み込んだ内容は、一行ごとに、配列にし、
後々のコードで、1文字ずつ表示されるようにしていくつもりです。
RPGみたいなのを作っていて、画面の下のほうにコメントを出せたらいいな、と思っています。
表示方法等は、わかっています。
わからないのは、リソースから、テキストファイルを読み込む作業です。
ちなみに、読み込んだ内容は、一行ごとに、配列にし、
後々のコードで、1文字ずつ表示されるようにしていくつもりです。
Re:リソースの文字列(テキストファイル)の読み出し
C++/CLIでフォームアプリでDXライブラリ結合は試したことがないので保証はできませんが
http://support.microsoft.com/kb/311259/ja
でchar*型にしてやれば出来ると思います。
それと滝の上のマスカットさんは、C++/CLIでDXライブラリを使うという余り前例の無い使い方をされているので、アイデア的なものは示せますが色々自分で調べて試してもらうしか無いことをご理解下さい。
C言語やC++でもリソースでデータを持つ人自体がとても珍しいですから。
http://support.microsoft.com/kb/311259/ja
でchar*型にしてやれば出来ると思います。
それと滝の上のマスカットさんは、C++/CLIでDXライブラリを使うという余り前例の無い使い方をされているので、アイデア的なものは示せますが色々自分で調べて試してもらうしか無いことをご理解下さい。
C言語やC++でもリソースでデータを持つ人自体がとても珍しいですから。
Re:リソースの文字列(テキストファイル)の読み出し
char Bun[9];
LoadString( MAKEINTRESOURCE (samp) , "MYTEXT" , Bun , 200);
を使う感じではだめでしょうか。
もしくは、ファイルの拡張子を変えておいて、それをコード内で変更して、読み込むということでもいいのでしょうか。
LoadString( MAKEINTRESOURCE (samp) , "MYTEXT" , Bun , 200);
を使う感じではだめでしょうか。
もしくは、ファイルの拡張子を変えておいて、それをコード内で変更して、読み込むということでもいいのでしょうか。

Re:リソースの文字列(テキストファイル)の読み出し
少なくとも、TCHARじゃないとマズイのにcharだとか、char Bun[9]; に対して200文字もの読み込みを許可しているとか問題点はたくさんありますね。
UNICODEとSJIS混在の問題がありますので、DXライブラリならまずSJISコードで統一しましょう。そういう意味でもテキストファイルをそのままリソースにした方が後々扱いやすいとは思います。
FindResource()して、LoadResource()、LockResource()してポインタを得るって手順で良いんじゃないでしょうか。
【追記】
ここが参考になると思います。
http://wisdom.sakura.ne.jp/system/winap ... win75.html
UNICODEとSJIS混在の問題がありますので、DXライブラリならまずSJISコードで統一しましょう。そういう意味でもテキストファイルをそのままリソースにした方が後々扱いやすいとは思います。
FindResource()して、LoadResource()、LockResource()してポインタを得るって手順で良いんじゃないでしょうか。
【追記】
ここが参考になると思います。
http://wisdom.sakura.ne.jp/system/winap ... win75.html

Re:リソースの文字列(テキストファイル)の読み出し
でも、後々のことを考えるといま苦労しておいた方がいい気がするんです。
テキストファイルをそのままリソースするってことは、
リソースにファイルを取り込んで、
リソース内からそのファイルを読み出し、
そのファイル内の文字列データを1文字ずつ分解・配列化して保存、
そして、配列を読み出していくってことになるのでしょうか。
何がしたいか、もっと詳しく書くと、
http://homepage2.nifty.com/natupaji/DxL ... am.html#N6
にある、サウンドノベル風の文字表示をリソースを利用してできないか、ということなのですが。
実践中心に基礎をやっていこうと考えているので、ポインタとか初歩的だと思うのですが、
理解できていないんです。
テキストファイルをそのままリソースするってことは、
リソースにファイルを取り込んで、
リソース内からそのファイルを読み出し、
そのファイル内の文字列データを1文字ずつ分解・配列化して保存、
そして、配列を読み出していくってことになるのでしょうか。
何がしたいか、もっと詳しく書くと、
http://homepage2.nifty.com/natupaji/DxL ... am.html#N6
にある、サウンドノベル風の文字表示をリソースを利用してできないか、ということなのですが。
実践中心に基礎をやっていこうと考えているので、ポインタとか初歩的だと思うのですが、
理解できていないんです。
Re:リソースの文字列(テキストファイル)の読み出し
>でも、後々のことを考えるといま苦労しておいた方がいい気がするんです。
苦労は良い場合もありますが、将来的に効率を上げるために苦労すべき事でわざわざ効率を下げるための苦労はしない方が良いと思います。つまり、ストリングテーブル・リソースを使うとデータ追加・変更のたびに苦労するんであまりにも非効率的です。
>テキストファイルをそのままリソースするってことは、
>リソースにファイルを取り込んで、
>リソース内からそのファイルを読み出し、
>そのファイル内の文字列データを1文字ずつ分解・配列化して保存、
>そして、配列を読み出していくってことになるのでしょうか。
テキストファイルをそのままリソースとして扱う場合はexeファイルに組み込まれるので、組込まれているリソースをFindResourceで検索してLoadResourceでメモリに展開、LockResourceでテキストの先頭ポインタを得ます。
この先頭ポインタの指すテキストデータを改行で一行毎に分解しながら表示すればOKです。もちろん、文字列やポインタに関する知識が必要です。あと、この方法なら将来的にテキストを暗号化してゲームのネタバレを防止できる機能も追加できますね。
>実践中心に基礎をやっていこうと考えているので、ポインタとか初歩的だと思うのですが、
>理解できていないんです。
基礎をちゃんとやりたいならポインタは避けるべきでは無いですね。
ただ、C++/CLI的ではない書き方なんで、そこの処は覚えておいてください。今までの話を伺う限り、C++/CLIは必要ないんじゃないかと思いますが、もしかしてリソース管理のためだけに使っています?
苦労は良い場合もありますが、将来的に効率を上げるために苦労すべき事でわざわざ効率を下げるための苦労はしない方が良いと思います。つまり、ストリングテーブル・リソースを使うとデータ追加・変更のたびに苦労するんであまりにも非効率的です。
>テキストファイルをそのままリソースするってことは、
>リソースにファイルを取り込んで、
>リソース内からそのファイルを読み出し、
>そのファイル内の文字列データを1文字ずつ分解・配列化して保存、
>そして、配列を読み出していくってことになるのでしょうか。
テキストファイルをそのままリソースとして扱う場合はexeファイルに組み込まれるので、組込まれているリソースをFindResourceで検索してLoadResourceでメモリに展開、LockResourceでテキストの先頭ポインタを得ます。
この先頭ポインタの指すテキストデータを改行で一行毎に分解しながら表示すればOKです。もちろん、文字列やポインタに関する知識が必要です。あと、この方法なら将来的にテキストを暗号化してゲームのネタバレを防止できる機能も追加できますね。
>実践中心に基礎をやっていこうと考えているので、ポインタとか初歩的だと思うのですが、
>理解できていないんです。
基礎をちゃんとやりたいならポインタは避けるべきでは無いですね。
ただ、C++/CLI的ではない書き方なんで、そこの処は覚えておいてください。今までの話を伺う限り、C++/CLIは必要ないんじゃないかと思いますが、もしかしてリソース管理のためだけに使っています?
Re:リソースの文字列(テキストファイル)の読み出し
>もしかしてリソース管理のためだけに使っています?
リソースの管理のためというよりも、C++/CLI自体をそんなに意識して使っていないので、自分でもよくわかりません。
リソースを使う理由としては、将来、何か作って配布するときとかに、データを読まれにくくするためです。
(暗号化ということも考えているのですが、そこはまだいいかなとおもっています)
リソースの管理のためというよりも、C++/CLI自体をそんなに意識して使っていないので、自分でもよくわかりません。
リソースを使う理由としては、将来、何か作って配布するときとかに、データを読まれにくくするためです。
(暗号化ということも考えているのですが、そこはまだいいかなとおもっています)
Re:リソースの文字列(テキストファイル)の読み出し
>リソースを使う理由としては、将来、何か作って配布するときとかに、データを読まれにくくするためです。
C++/CLIで、.NET的な書き方をしない場合にどんな最適化が行われるかは分かりませんが、.NETの部分は逆コンパイルが容易です。つまりソースコードが解析されやすいです。
あと、リソースはそのままexeファイルに埋め込まれるのでバイナリエディタで開くと書かれた文字は読まれてしまいます。
http://www.vector.co.jp/soft/winnt/util/se230275.html
exe内のリソースを外部に書き出すためのツールってのもあります。
http://www.vector.co.jp/soft/win95/util/se114990.html
なので暗号化しないとリソースにしても効果はさほどありません。
暗号化するなら、結局のところファイルにしても同じなのでリソース化のメリットはさほど無いと思います。
C++/CLIで、.NET的な書き方をしない場合にどんな最適化が行われるかは分かりませんが、.NETの部分は逆コンパイルが容易です。つまりソースコードが解析されやすいです。
あと、リソースはそのままexeファイルに埋め込まれるのでバイナリエディタで開くと書かれた文字は読まれてしまいます。
http://www.vector.co.jp/soft/winnt/util/se230275.html
exe内のリソースを外部に書き出すためのツールってのもあります。
http://www.vector.co.jp/soft/win95/util/se114990.html
なので暗号化しないとリソースにしても効果はさほどありません。
暗号化するなら、結局のところファイルにしても同じなのでリソース化のメリットはさほど無いと思います。
Re:リソースの文字列(テキストファイル)の読み出し
そうですか。
暗号化に関しては、もう少し、先の話になりそうなので、リソースやポインタなど基本的なところを
もっと、やりこんでいきたいとおもいます。
いろいろと、ご教授ありがとうございました。
一旦解決とさせていただきます。
暗号化に関しては、もう少し、先の話になりそうなので、リソースやポインタなど基本的なところを
もっと、やりこんでいきたいとおもいます。
いろいろと、ご教授ありがとうございました。
一旦解決とさせていただきます。