• 締切済み

Windowsにエラーがあると言われる。

ゲームでswitch文で難易度毎に敵の構造体にデータをセットしたいのですが、 方法によって起動後にWindowsにエラー送信云々と言われて終了してしまいます。 駄目だった時の書き方は switch(level){ case LEVEL_EASY: teki[0] = SetTeki(type,y,timing*(1)); teki[1] = SetTeki(TEKI_BANAYELOW2,0,timing*(2)); teki[2] = SetTeki(type,y,timing*(3.5)); teki[3] = SetTeki(type,y,timing*(4.5)); teki[4] = SetTeki(TEKI_BANAYELOW2,0,timing*(6)); teki[5] = SetTeki(TEKI_BANAYELOW2,0,timing*(7)); teki[6] = SetTeki(TEKI_BANAYELOW3,0,timing*(8.5)); teki[6] = SetTeki(TEKI_BANABLUE,0,timing*(10)); teki[7] = SetTeki(TEKI_BANABLUE,y,timing*(11)); teki[8] = SetTeki(type,y,timing*(12.5)); teki[9] = SetTeki(type,y,timing*(13.5)); teki[11] = SetTeki(TEKI_BANAYELOW2,0,timing*(15.5)); teki[12] = SetTeki(TEKI_BANAYELOW2,0,timing*(16.5)); teki[13] = SetTeki(TEKI_BANAYELOW3,0,timing*(19)); teki[14] = SetTeki(TEKI_BANAYELOW3,y,timing*(19)); teki[15] = SetTeki(TEKI_BANABLUE,y,timing*(20.5)); teki[16] = SetTeki(TEKI_BANABLUE,0,timing*(20.5)); teki[17] = SetTeki(TEKI_BANARED,y/2,timing*(20.5)); break; //作成途中なのでこの下にもう2つLEVEL_NORMALとLEVEL_HARDで同じ内容の分岐があります } で、良かった時の書き方は for(int i=0;i<TEKI_MAX;i++){   if(i==0){     teki[i] = SetTeki(TEKI_BANABLUE,0,timing*(i+1));   }else if(i==1){     teki[i] = SetTeki(TEKI_BANARED,y/2,timing*(i+1));   }else{     teki[i] = SetTeki(type,y,timing*(i+1));   } } でした。 自分には何で上が駄目で下が良いのか全く分かりません。 LEVEL_EASYなどはヘッダーで enum { //レベル LEVEL_EASY, LEVEL_NORMAL, LEVEL_HARD, }; としてあり、分割してあるソースコードの内、これを使う他の関数は正常に機能しています。 多すぎるのかと思って半分や1つにもしましたが同様にエラーだと言われます。 VC++ExpressEditionではビルド時にはエラーがあるとは言われません。 何がなんだか分からないのでどなたか原因の可能性がある部分を教えてください。

  • TNK3
  • お礼率60% (3/5)

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.4

★アドバイス ・エラーダイアログで『デバッグ』というボタンを押してデバックして調査して下さい。  運がよければソース上のどの場所でエラーになるのかが分かります。 ・以上。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★エラー場所を特定して下さい。 ・SetTeki 関数を呼ぶ前と呼んだ後に MessageBoxなどを挿入してどちらで  お馴染みのエラーダイアログが発生しますか?  つまり  CharaData teki[ 18 ];    switch( level ){   case LEVEL_EASY:    MessageBox( hWnd, "呼ぶ前", "確認1", MB_OK );    SetTeki( &teki[0], … );    MessageBox( hWnd, "呼んだ後", "確認2", MB_OK );    break:   :  }  として2つのメッセージボックスの何処でお馴染みのエラーダイアログが  表示されるか調査して下さい。 ・組み合わせは  (1)『確認1』より前にエラーダイアログが表示される  (2)『確認1』と『確認2』の間でエラーダイアログが表示される  (3)『確認2』の後でエラーダイアログが表示される  これにより SetTeki 関数が原因か、それ以外かの切り分けが出来ると思います。 ・(1)なら SetTeki 関数を呼ぶもっと手前の処理でバグっています。  (2)なら SetTeki 関数を徹底的に見直すこと。  (3)なら SetTeki 関数を呼んだ後の処理で代入、参照などの処理でバグっている可能性があります。  きっとソースファイルは大きいでしょうからエラーダイアログが表示される場所を  特定することを目標にして下さい。 ・以上。

TNK3
質問者

お礼

処理を追うためにあちこちにメッセージボックスを埋め込んだ所、 ある事に気づきました。 この敵をセットする関数はTeki1Init()という名前で、 メインとなる.cppファイルにて case GAME_STAGE_1: score = 0; flagScore = TRUE; JikiInit(); //※1 Teki1Init(); //※2 BakuenInit(); StopSoundMem(soundOpening); PlaySoundMem(soundBgm, DX_PLAYTYPE_LOOP); break; とswitch文で呼ばれているのですが、 SetTeki()をswitch文で呼び出すと、 ※1も※2も表示されませんでした。 しかし、switch文でもfor文でもその前後に仕込んだメッセージボックスは表示されます。 そしてTeki1Init()関数はここでしか呼ばれていません。 という事は、「呼ばれていないのに処理が実行されている」という事になるのでしょうか? そんな事は起こりうるのでしょうか?

TNK3
質問者

補足

確認したところ(3)のようです。 とりあえず処理を追って確認して見ます。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス ・『teki』配列はどのように宣言していますか?  (1)struct CharaData teki[ 18 ]  (2)struct CharaData *teki[ 18 ]  どっちですか? ・あと構造体の定義は typedef を使った方が分かりやすくなりますよ。  typedef struct CharaData {   :   省略   :  } CharaData;  として ・CharaData SetTeki( int tekiType, int y, int timing )  {   CharaData val;      return val;  } ・CharaData teki[ 18 ];    switch( level ){   case LEVEL_EASY:    teki[ 0 ] = SetTeki( … );     :    teki[ 17 ] = SetTeki( … );    break:   :  }  特に SetTeki 関数に問題は無いように見えます。  teki[0]~teki[17] はポインタの配列ではないですよね。  ポインタの配列ではエラーになりますけど。 ・どうせなら SetTeki 関数の第1引数に構造体へのポインタを渡すように  すれば良いと思いますが…。つまり ・void SetTeki( CharaData *val, int tekiType, int y, int timing )  {   CharaData val; ←不要になる      val->x = WINDOW_WIDTH; //初期座標   val->y = y;   val->timing=timing; //出現タイミング    :   省略    :   return val; ←不要になる  }  このように定義して  CharaData teki[ 18 ];    switch( level ){   case LEVEL_EASY:    SetTeki( &teki[0], … );     :    SetTeki( &teki[17], … );    break:   :  }  とします。 ・実行時のエラーとはどんなメッセージ(ダイアログ)が表示されますか?  ここも補足して下さい。 ・それでは。また。

TNK3
質問者

お礼

ご指摘の通りに改良しましたがやはり同様に駄目でした。

TNK3
質問者

補足

定義は(1)です。 SetTeki()関数の改良については追ってご報告致します。 実行時のエラーとは 問題が発生したため、Object.exe を終了します。 ご不便をおかけして申し訳ありません。 と言われてしまいます。 そしてエラー報告を送信しますか云々と聞かれます。 私はこの手のエラーになるのが応答なしのプログラムをタスクマネージャで強制終了させる時くらいしか見ないので 対策が全く分からなかったのです。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★補足要求します。 ・SetTeki() 関数のプロトタイプか定義内容を見せて下さい。  ついでに teki[0]~teki[17] はどんな配列ですか?  構造体なども見せて下さい。 ・以上。

TNK3
質問者

補足

SetTeki()関数は struct CharaData SetTeki(int tekiType,int y,int timing ) { struct CharaData val; val.x = WINDOW_WIDTH; //初期座標 val.y = y; val.timing=timing; //出現タイミング switch(tekiType) { case TEKI_BANAYELOW1: val.life = 0;//出現フラグを立てる val.animpat = 1; val.ghandle = &imgTeki[0]; GetGraphSize(*(val.ghandle),&(val.image_w),&(val.image_h)); val.bounds_w=64; val.bounds_h=64; val.size=1.0;//敵の大きさ val.hitmode=HIT_NORMAL; val.pattern = 1; //どういう軌道を描くか val.counter = 0; break; case TEKI_BANAYELOW2: val.life = 0;//出現フラグを立てる val.animpat = 1; val.ghandle = &imgTeki[0]; GetGraphSize(*(val.ghandle),&(val.image_w),&(val.image_h)); val.bounds_w=64; val.bounds_h=64; val.size=1.0;//敵の大きさ val.hitmode=HIT_NORMAL; val.pattern = 2; //どういう軌道を描くか val.counter = 0; break; case TEKI_BANAYELOW3: val.life = 0;//出現フラグを立てる val.animpat = 1; val.ghandle = &imgTeki[0]; GetGraphSize(*(val.ghandle),&(val.image_w),&(val.image_h)); val.bounds_w=64; val.bounds_h=64; val.size=1.0;//敵の大きさ val.hitmode=HIT_NORMAL; val.pattern = 3; //どういう軌道を描くか val.power = 1.0 val.counter = 0; break; case TEKI_BANABLUE: val.life = 0;//出現フラグを立てる val.animpat = 1; val.ghandle = &imgTeki[0]; GetGraphSize(*(val.ghandle),&(val.image_w),&(val.image_h)); val.shot_flag = 0; val.bounds_w=64; val.bounds_h=64; val.size=1.0;//敵の大きさ val.hitmode=HIT_NORMAL; val.pattern = 4; //どういう軌道を描くか val.counter = 0; break; case TEKI_BANARED: val.life = 0;//出現フラグを立てる val.animpat = 1; val.ghandle = &imgTeki[0]; GetGraphSize(*(val.ghandle),&(val.image_w),&(val.image_h)); val.shot_flag = 0; val.bounds_w=64; val.bounds_h=64; val.size=1.0;//敵の大きさ val.hitmode=HIT_NORMAL; val.pattern = 5; //どういう軌道を描くか val.counter = 0; break; } for(int i=0;i<TEKITAMA_MAX;i++){ tekiTama[i].life = 0; tekiTama[i].shot_flag = 0; } return val; } で、その元となる構造体CharaDataはヘッダーファイルにて struct CharaData{ float x; //左上の座標 float y; // int *ghandle; //画像ハンドルへのポインタ int animpat; //アニメーションコマ数 int life; // int image_w; //イメージのサイズ int image_h; // int bounds_w; //当たり判定のサイズ int bounds_h; // int hitmode; //当たり判定属性 int power; //攻撃力 double size; //0.0~1.0 int timing; int pattern; //移動パターン int shot_flag int counter double angle;//角度保存用。 }; と定義されていて、他の部分でも使っています。 これで大丈夫でしょうか?

関連するQ&A

  • C言語にて至急質問!!

    授業でゲーム作成してますがタイム表示とえさの残り数表示と残りのライフ表示 のプログラムがわかりません プログラムは下にあります #include<stdio.h> #include<stdlib.h> #include<time.h> #include"utility.h" int map[25][40]; typedef struct{ int x; int y; int life; int col; }CHAR; void disp(int,int); void main(void) { FILE *fp; CHAR man,mapsize,teki[5]; int i,j,cnt = 0,x,y,flg,wx,wy,stime = 0,etime = 0 ; GetConsoleHandle( ); srand(time(NULL)); fp = fopen("map.txt","r"); if(fp == NULL){ printf("ファイルエラー\n"); return; } fscanf(fp,"%d %d",&mapsize.y,&mapsize.x); fscanf(fp,"%d %d",&man.y,&man.x); wy = man.y; wx = man.x; fscanf(fp,"%d" "%d",&y,&x); for(i = 0;i < mapsize.y;i++) for(j = 0;j < mapsize.x;j++){ fscanf(fp,"%d",&map[i][j]); if(map[i][j] == 1) cnt++; } fclose(fp); disp(mapsize.x,mapsize.y); Locate(man.x * 2 +10,man.y + 3); printf("Э"); if(map[man.y][man.x] == 1){ cnt--; map[man.y][man.x] = 0; } man.life = 10; man.col = 0x0e; for(i = 0;i < 5;i++){ teki[i].y = y; teki[i].x = x; teki[i].life = 1; teki[i].col = rand() % 7 + 9; } while(cnt && man.life){ Wait(100); if(KeyCheck(ESCAPE)) break; Locate(man.x * 2 + 10,man.y + 3); SetColor2(0x00); printf(" "); if(KeyCheck (LEFT) && map[man.y][man.x - 1] != 9){ man.x--; } if(KeyCheck (RIGHT) && map[man.y][man.x + 1] != 9){ man.x++; } if(KeyCheck (UP) && map[man.y - 1][man.x] != 9){ man.y--; } if(KeyCheck (DOWN) && map[man.y + 1][man.x] != 9){ man.y++; } flg = -1; for(i = 0;i < 5;i++){ if(man.y == teki[i].y && man.x == teki[i].x) flg = i; } if(flg == -1){ if(map[man.y][man.x] > 9){ j = map[man.y][man.x]; man.x = j / 100; man.y = j % 100; } if(map[man.y][man.x] == 1){ cnt--; map[man.y][man.x] = 0; } else if(map[man.y][man.x] == 2){ map[man.y][man.x] = 0; stime = time(NULL); etime = stime + 10; } }else{ stime = time(NULL); if(stime < etime){ teki[flg].life--; if(map[teki[flg].y][teki[flg].x] == 1){ map[teki[flg].y][teki[flg].x] = 0; cnt--; }else if(map[teki[flg].y][teki[flg].x] == 2){ map[man.y][man.x] = 0; stime = time(NULL); etime = stime + 10; } }else{ man.life--; SetColor(0x0f); Locate(60,3); Locate(teki[flg].x * 2,teki[flg].y); SetColor2(teki[flg].col); printf("Ψ"); man.x = wx; man.y = wy; Wait(3000); Locate(man.x * 2 + 10,man.y + 3); SetColor2(man.col); printf("Э"); } } Locate(man.x * 2 + 10,man.y + 3); SetColor2(man.col); printf("Э"); for(i = 0;i < 5;i++){ if(teki[i].life == 1){ Locate(teki[i].x * 2 + 10,teki[i].y +3); switch(map[teki[i].y][teki[i].x]){ case 0:SetColor2(0x0f); printf(" "); break; case 1:SetColor2(0x0f); printf("・"); break; case 2:SetColor2(0x0c); printf("♪"); break; } j = rand() % 4; if(j == 0 && map[teki[i].y - 1][teki[i].x] != 9){ teki[i].y--; } if(j == 1 && map[teki[i].y][teki[i].x + 1] != 9){ teki[i].x++; } if(j == 2 && map[teki[i].y + 1][teki[i].x] != 9){ teki[i].y++; } if(j == 3 && map[teki[i].y][teki[i].x - 1] != 9){ teki[i].x--; } Locate(teki[i].x * 2 + 10,teki[i].y + 3); stime = time(NULL); if(stime < etime) SetColor2(teki[i].col << 4); else SetColor2(teki[i].col); printf("Ψ"); }else{ stime = time(NULL); if(stime >= etime){ teki[i].life = 1; teki[i].y = y; teki[i].x = x; } } } } } void disp(int x,int y){ int i,j; for(i = 0;i < y;i++){ for(j = 0;j < x;j++){ Locate(j*2 + 10,i + 3); switch(map[i][j]){ case 0:SetColor2(0x00); printf(" "); break; case 1:SetColor2(0x0f); printf("・"); break; case 2:SetColor2(0x0c); printf("♪"); break; case 9:SetColor2(0x99); printf("■"); break; default:SetColor2(0x0d); printf(" "); } } } } このどこかに質問したプログラムがはいるかもおしえてほしいです。 至急回答をどうかおねがいします

  • suzukaでの携帯flash作成

    suzukaで携帯のメニューアイコンを作っているのですが、swf6ではfscommandが反応しないのでswf4で作ることにしました。 ですが、for文がエラーになるので、 for(i=0;i<12;i++){ if(_root["mc"+i]._y>651){ _root["mc"+i]._y-=1116; } } を if(/mc0._y>651){ /mc0._y-=1116; }else if(/mc1._y>651){ /mc1._y-=1116; }else if(/mc2._y>651){ /mc2._y-=1116; }else if(/mc3._y>651){ /mc3._y-=1116; }else if(/mc4._y>651){ /mc4._y-=1116; }else if(/mc5._y>651){ /mc5._y-=1116; }else if(/mc6._y>651){ /mc6._y-=1116; }else if(/mc7._y>651){ /mc7._y-=1116; }else if(/mc8._y>651){ /mc8._y-=1116; }else if(/mc9._y>651){ /mc9._y-=1116; }else if(/mc10._y>651){ /mc10._y-=1116; }else if(/mc11._y>651){ /mc11._y-=1116; } に変えたのですがうまく動作しません。 どこか間違いはありますか? またswf6でfscommandを使う方法はないんでしょうか? 長文失礼しました。 回答よろしくお願いします。

  • ゲームプログラミング C++ エラーについて

    初めて投稿させていただきます ゲームプログラミングの基礎を勉強しているのですが、今回まったく原因がわからないエラーで困っております。 どうかお手を貸していただけないでしょうか エラーの内容 E2193呼び出し時のパラメータが足りない:AnimDraw::setGap(int,int)(関数 TekiControl::loadFiles() throw(int) ) プログラムteki.h #ifndef __TEKICONTROL_H__ #define __TEKICONTROL_H__ #include "animdraw.h" #include "charadata.h" #include <list> using namespace std; class TekiControl{ list<CharaData> tekilist; list<CharaData> tamalist; AnimDraw tekianim; AnimDraw tamaanim; public: void loadFiles() throw(int); void init(); void move(); }; #endif プログラムteki.cpp #include "teki.h" void TekiControl::loadFiles() throw(int){ int scgh = LoadGraph("media\\boss_2.png"); if(scgh==-1) throw(-2); int gh = DerivationGraph( 0,0,78,63,scgh); tekianim.setImage(0,gh); gh = DerivationGraph( 80,0,32,32,scgh); //子機 tekianim.setImage(1,gh); gh = DerivationGraph( 112,0,32,32,scgh); //子機 tekianim.setImage(1,gh); gh = DerivationGraph( 143,0,35,34,scgh); //弾 tamaanim.setImage(0,gh); tamaanim.setGap(8); //ここにエラーが出ています } //init,move関数 void TekiControl::init(){ tekilist.clear(); //敵キャラのリストを空にする CharaData teki; //ローカル変数tekiの宣言 teki.x = 400; teki.y = 156; teki.anim = &tekianim; teki.life = 15; //敵HP teki.image_w = 128; teki.image_h = 96; teki.bounds_w = 100; teki.bounds_h = 48; teki.amode = A_HARD; tekilist.push_back(teki); //敵キャラデータセット tamalist.clear(); //敵弾リストクリア } void TekiControl::move(){ list<CharaData>::iterator it; it = tekilist.begin(); (*it).anim->draw(0, (*it).x, (*it).y); } 解る方どうかよろしくお願いします(汗

  • 初心者です。 配列のエラーがどうしても解決できません。 誰か助けてください・・・

    魔方陣のプログラムを考えて書いてみましたが、 エラーが出てしまい実行することができません。 class mahoujin{ public static void main(String args[]){ int n=3; int a[][] = new int[3][3]; int x=0; int y=1; for(int p=0;p<=3;p++){ for(int q=0;q<=3;q++){ a[p][q]=0;} } for(int i=1;i<=n*n;i++){ if((i%n)==1){x++; }else{x--; y++;} if(x==0){x=3;} if(y==3){y=0;} a[x][y]=i;} } } 空の配列や配列を外れるものがあるかをよく考えてみましたが、どうしても解決できません。助けてください・・・

  • エラーを探しきれません

    ビルドをすると表示されるエラー文です。(ファイルパス省略有) C:\…\Z\4.c(4) : error C2087: '<Unknown>' : 添字が不正です。 C:\…\Z\4.c(9) : error C2059: 構文エラー : ';' C:\…\Z\4.c(11) : error C2059: 構文エラー : ';' C:\…\Z\4.c(11) : error C2143: 構文エラー : ';' が ')' の前に必要です。 C:\…\Z\4.c(12) : error C2059: 構文エラー : ';' C:\…\Z\4.c(12) : error C2143: 構文エラー : ';' が ')' の前に必要です。 C:\…\Z\4.c(15) : error C2059: 構文エラー : '}' C:\…\Z\4.c(54) : error C2059: 構文エラー : '}' cl.exe の実行エラー 以下はエラーの多い最初から20行までのコピーです。 #include "params.h" /*ヒストグラムを画像化する(ただしLEVEL/HIST_X_SIZE=1または2の場合のみ)*/ histimage(hist,image_hist) long hist[LEVEL]; /*ヒストグラムLEVELは濃度レベル数(8bitでは256)*/ unsigned char image_hist[HIST_Y_SIZE][HIST_X_SIZE]; /*出力画像配列*/ { int i,j,k,max,ratio,range; long n; float d; ratio=LEVEL/HIST_X_SIZE; range=HIST_Y_SIZE-5; for(i=0;i<HIST_Y_SIZE;i++){ for(j=0;j<HIST_X_SIZE;j++){ image_hist[i][j]=LOW; } } switch(ratio){ case 1:max=0; for(i=0;i<LEVEL;i++){ n=hist[i]; if(n<max)max=n; } 確認しても";"や"}"のミスがないと思うのです。 半角、全角ミスをなくすために一度全部打ち直してもまったく同じエラーでした。 このソースは「C言語で学ぶ実践画像処理」のサンプルを写したものです。 vc++ で作業しています。 何かお気づきの点等ありましたら指摘お願いします。

  • javascriptのエラーを修正したいです。

    javascriptのエラーを修正したいです。どなたか教えて下さい。 下記のjsの内容でシンタックスエラーが出ます。indexページを自動で14通り変更する設定の一部なのですが どうしてもエラーを解除できません。知識不足ですいませんがどなたか教えて頂けませんでしょうか? function check(y){return (y%4==0&&(y%400==0||y%100!=0))?true:false;}//うるう年チェック関数 if(addr.charAt(addr.length-1)!="/") addr += "/"; var list = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var date = new Date(); var today = [date.getYear(),date.getMonth()+1,date.getDate()]; var t_r = refer[0]*365+refer[2]; var t_t = today[0]*365+today[2]; if(check(refer[0])) ++refer[0]; if(check(refer[1])) ++refer[1]; for(var i=0;i<refer[1]-1;++i)t_r += list[i]; for(var i=0;i<today[1]-1;++i)t_t += list[i]; var str = addr+format.replace("NN",("0"+((t_t-t_r+1)%length)).slice(-2)); if(mode==0) = location.href= str; else document.getElementById("frame").src = str; </script> if(mode==0) = location.href= str; else document.getElementById("frame").src = str; この部分がシンタックスエラーが出ます。どのように修正すれば良いでしょうか? この上記の部分の正しい記述の仕方を教えて頂けると助かります。 よろしくお願い致します。

  • 「シンボルを見つけれません」というエラーへの対処法

    下記のコードの If(type.compareTo("名詞") == 0); で「シンボルを見つけれません」「シンボル:メソッドif(boolean)」というエラーが出てしまいます。 なぜ、他のif文ではエラーが出ないのにこの行ではエラーが出るのか分かりません。 対処法を教えていただけないでしょうか? public void set_dictionary(String dict_filename) { } public int run(byte[] text, int start, int length, byte[] terms) { String type; //品詞の比較用 byte[] buf1 = new byte[1000]; //textの内容を一時的に格納しておくための配列1 byte[] buf2 = new byte[1000]; //textの内容を一時的に格納しておくための配列2 int i, j, k, count1, count2, FLG; count1 = 0; count2 = 0; k = 0; FLG = 0; for(i = start; i < length; i++) { if(text[i] == '\t') { FLG = 1; count2 = 0; } else if(text[i] == ' ') { FLG = 0; count1 = 0; } else { if(FLG == 1) { buf2[count2++] = text[i]; } else if(FLG == 0) { buf1[count1++] = text[i]; } } if((count2 == 5)&&(FLG == 1)) { type = new String(buf2, 0, 4); If(type.compareTo("名詞") == 0); { for(j = 0; j < count1; j++) { terms[k++] = buf1[j]; } terms[k++] = '/'; } count2 = 0; FLG = 2; } } return k; //term中のデータの長さを返す }

  • エラー表示について

    PHP初心者の波平と申します。 今PHP5、Mysqlを使ってDBの作成をしています。 この度のエラーメッセージの表示をスイッチ文を使ってエラーを表示したいのですがPHPの構文エラーで最後の行でParse error: syntax error,というエラーが出てしまいます。ドコがいけないんでしょうか?宜しくお願いします。 <?php $se_EMAIL="a"; $se_PWD = A; $se_POINT = 1210000; $P_EMAIL="a"; $P_PWD = A; $Pay1 = 3; $q_array=array(1=>"200000","500000","1000000"); //未入力項目がないか確認 if($P_EMAIL=="" || $P_PWD=="" ) { Error(1); } else { //入力したメアドとパスワードがセッションしてる物と同じか確認 if($se_EMAIL != $P_EMAIL) {Error(2);} elseif($se_PWD != $P_PWD) {Error(3);} //同じなら換金したいポイントをse_POINTからを引き$NEWPOINへ。 else{ if($Pay1 == 1) if($se_POINT >= 200000) {$NEWPOINT = $se_POINT-$q_array[$Pay1];} else {Error(4);} } ?> <html> <head> </head> <body> <br> $NEWPOINTの表示<br> 残りは<?= $NEWPOINT ?>ポイントです。<br> </body> </html> <?php function Error($error_type){ switch($error_type){ case 1: $error_msg = "未入力項目があります。"; break; case 2: $error_msg = "メールアドレスが違います。"; break; case 3: $error_msg = "パスワードが違います"; break; case 4: $error_msg = "ポイントが不足しています。"; break; } ?> <html> <head> </head> <body> **** エラー ****<br> <?= $error_msg ?><br> </body> </html> <?php exit; } ?>

    • ベストアンサー
    • PHP
  • FLASHの出力エラーについて

    FLASHの出力エラーの原因がわかりません。 プレビューを押したとき ArgumentError: Error #2004: パラメータの 1 つが無効です。 at flash.display::Graphics/drawRect() at _fla::MainTimeline/xClick() とでてしまいます。 詳しい方、ご教授お願い致します。 ↓アクションスクリプトです add_btn.addEventListener(MouseEvent.CLICK, xClick); function xClick(evt) { var num1:Number = Number(in1_txt.text); var num2:Number = Number(in2_txt.text); var h:Number; if (num1 < 18) { h = 60; } else if ((num1 >= 18) && (num1 < 20)) { h = 50; } else if ((num1 >= 20) && (num1 < 23)){ h = 40; } var black:Number; if (num1 < 18) { black = (0xb0c4de); } else if ((num1 >= 18) && (num1 < 20)) { black = (0x8e9db2); } else if ((num1 >= 20) && (num1 < 23)) { black = (0x66707f); } else if ((num1 >= 23) && (num1 < 26)) { black = (0x232933); } else if(num1 > 25) { black = (0x232933); } var iro:Number; if (num1 < 18) { iro = 0.3;; } else if ((num1 >= 18) && (num1 < 20)) { iro = 0.4; } else if ((num1 >= 20) && (num1 < 23)){ iro = 0.5; }else if (num1 >50){ iro = 1.0; } var color:Number; if ((num2 >= 18) && (num2 <=25)){ color = (Math.random() * 0xffffff); } else if ( (num2 >=40) && (num2 <= 50)) { color = (0x999966); } else if(num1 > 50){ color = (0x996633); } else { color = (Math.random() * 0xffffff); } var k:Number; if ((num1 >= 23) && (num1 < 25)) { var mae:Shape=new Shape(); mae.graphics.beginFill(color); mae.alpha = 0.5; mae.graphics.drawRect(645 ,410, 310, 30); mae.graphics.endFill(); addChild(mae); for( y = 455 ; y <= 770 ; y = y + 255 ) { var ye:Shape=new Shape(); ye.graphics.beginFill(black); ye.graphics.drawRect(645 ,y, 310, 35); ye.graphics.endFill(); addChild(ye); } for( y = 505 ; y <= 700 ; y = y + 55 ) { var shima:Shape=new Shape(); shima.graphics.beginFill(color); shima.alpha = 0.5; shima.graphics.drawRect(645 ,y, 310, 28); shima.graphics.endFill(); addChild(shima); } } var m:Number; if (num1 >= 25) { var bod:Shape=new Shape(); bod.graphics.beginFill(color); bod.alpha = 0.5; bod.graphics.drawRect(645 ,410, 310, 10); bod.graphics.drawRect(645 ,490, 310, 10); bod.graphics.drawRect(645 ,660, 310, 20); bod.graphics.drawRect(645 ,685, 310, 5); bod.graphics.endFill(); addChild(bod); for( y = 430 ; y <= 700 ; y = y + 265 ) { var rec:Shape=new Shape(); rec.graphics.beginFill(black); rec.graphics.drawRect(645 ,y, 310, 50); rec.graphics.endFill(); addChild(rec); } for( y = 500 ; y <= 655 ; y = y + 40 ) { var ran:Shape=new Shape(); ran.graphics.beginFill(color); ran.alpha = 0.5; ran.graphics.drawRect(645 ,y, 310, Math.random()*30); ran.graphics.endFill(); addChild(ran); } }

  • リストデータの検索でのエラー表示について教えてください。

    検索するチェックボックスの配列データに、全て一致するデータを、 データファイルから取り出すコードで以下のようなエラーメッセージが 出ました。 どこが悪いのかわかりません、教えてください。 コード: if (@setubi_o){ my $count=0; for($i=0;$i<$#setubi_o+1;$i++){ if($setubi=~ /$setubi_o[$i]/ ){$count++;}else{next;} } if($count==$#setubi+1){;}else{next;} } エラーメッセージ(KCatch.pm) [estate.cgi:445:die] /シャワー/: unmatched [] in regexp. > if($setubi=~ /$setubi_o[$i]/ ){$count++;}else{next;}

    • ベストアンサー
    • Perl