【アリス】system4.0【御用達】at GAMEDEV【アリス】system4.0【御用達】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト320:318 07/11/08 19:54:53 mXVUOzqf あ、InsertはPushBackしないのか。 >318の修正を if(szX != szA){asY.Insert(nL, szX);asY.Erase(nL+1);return asY[nL];} にしてみて。 修正前は文字列を直接置き換えてたっぽいから、 新しい文字列をその位置に挿入した後、後ろに一つずれた以前の文字列を削除するようにしてみた。 >319でもエラーは出ないし、 RPGの方も「無人」とか「勇者」とか出るようになったからちゃんと動いてるとは思う。 原因はわかんない。 stringの配列要素に直接代入するところが特殊仕様かもしれないけど、 ちゃんと動くこともあるからSystem4.0のバグなのかなぁ。 エラーが出るときもそうでないときも デバッガに出るans_t変数の現在値は変わらないように見えるし。 321:名前は開発中のものです。 07/11/08 19:56:16 NpNB32t6 代入はできませんが、加算代入はできるようなので、とりあえず↓こういう形でしのぐことにしました。 とはいえ、何故「asY[nL] = " "」が出来ないのかは未だに分からないので、 もし分かる方がいたらいつでもいいので教えて下さい。一定の条件のもと、 stringの代入が不可になるというのは、条件が分からないままだと困りそうです……。 //stringエラー対策用の代入式 void ADD(ref string szX,string szY) { int nLength = szX.Length(); szX += szY; int nL; for(;nL < nLength;nL++) { szX.Erase(0); } } //文字列から要素を検索し、szXを返します。[asXが要素の役割] string SString(string szX,string szV = szA,string szY = "Renew") { ans_ReAlloc; int nL;for (nL = 0;nL < asX.Numof(); nL++) {if(szX == asX[nL]){if(szV == szA){return asY[nL];} if(szV != szA){ADD(asY[nL],szV);return asY[nL];} } } if(szY == "Renew" && szV != szA) {asX.PushBack(szX);asY.PushBack(szV);return szV;} return szA; } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch