[過去ログ] 【アリス】system4.0【御用達】 (563レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
319
(1): 名前は開発中のものです。 [sage] 2007/11/07(水) 23:13:39 ID:xpaYlRaB(1) AAS
>>317-318
どうも有り難うございます。エラー箇所は分かったのですが、
何故エラーになるのかがどうしても分かりません。

>>318
318(2): 名前は開発中のものです。 [sage] 2007/11/07(水) 22:25:35 ID:aH1Zfske(2/2) AAS
ふと思いついて、
if(szX != szA){asY[nL] = szX;return asY[nL];}

if(szX != szA){asY.Erase(nL);asY.Insert(nL, szX);return asY[nL];}
としたらエラーはなくなったんだが、
これは>313、ライブラリ作者さん共に正しい動作になってるか?
まことに申し訳ないのですが、正しい動作になりません……。
第二引数に何を入れてもマウンテンデューが返ってくるようです。
「intなら大丈夫」というのはこういうことです。

//テスト
void game_main(void)
{
ans_t MS;

//MS.nSet("keyword",100);
//MS.nSet("keyword",200);
//N(MS.nGet("keyword"));A;//正常な動作だと200が出力

MS.ssSet("keyword","じむ");
MS.ssSet("keyword","がんたんく");
S(MS.ssGet("keyword"));A;//正常な動作だと"がんたんく"が出力
}

nSetはans_tのメソッド、SNumとほぼ同等のメソッドです。
ssSetはans_tのメソッド、SStringとほぼ同等のメソッドです。
SNumとSStringの違いは、int配列に入れるかstring配列に入れるかというだけで、
操作はほとんど同じです。

しかしnSet(上のコメントアウトしている方)は正常に動作し、
下のssSetの方は単独では前述のエラーメッセージが出ます
(コメントアウトを外し、先にnSetの方を動かすとssSetの方も正常に動きます)
どうしてこんな違いが出るのかに大混乱です。
320
(1): 318 [sage] 2007/11/08(木) 19:54:53 ID:mXVUOzqf(1) AAS
あ、InsertはPushBackしないのか。
>318の修正を
if(szX != szA){asY.Insert(nL, szX);asY.Erase(nL+1);return asY[nL];}
にしてみて。
修正前は文字列を直接置き換えてたっぽいから、
新しい文字列をその位置に挿入した後、後ろに一つずれた以前の文字列を削除するようにしてみた。

>319でもエラーは出ないし、
RPGの方も「無人」とか「勇者」とか出るようになったからちゃんと動いてるとは思う。

原因はわかんない。
stringの配列要素に直接代入するところが特殊仕様かもしれないけど、
ちゃんと動くこともあるからSystem4.0のバグなのかなぁ。
エラーが出るときもそうでないときも
デバッガに出るans_t変数の現在値は変わらないように見えるし。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.265s*