仕様追加
今日は、席替えソフトを、M永先生に話してみたら、
メンバーの削除をDBからじゃなしに、アプリケーション側で対応せよ。
という、まぁもっともな意見がでた。
やっぱり、ユーザ側の意見というのは、貴重である。
どうしても、「暗号化してないしさぁ、CSVなんだからDBいじればいいじゃない」と楽をしようとしてしまう。
で、仕様を考えながら一番楽な方法を探すことにする。これまでの
資源を有効に使うためには、チェックボタンを実装して、一括で消去するのが、
最もよさげなので、そういう風に作っていった。
が、なぜかvectorを利用しようとすると、うじゃあってエラーが出てくる。
で、さらに調査したら、こんなページを発見。
VC++ / MFC TIPS
なんてこった!!ガッデーーームッ!
あ、でも#pragmaすればいいのね。
で、やってみたら、うまいこといった。
でも、string型のvectorの確保がエラーはでないのに、文字が化けてる。
もう意味不明。
でも、VCってC++が使えるんだろう?と思ってさらに調べると、
http://www.nantekotta.com/stl.html
↑なページを発見。
おいおいSTLサポートする気ないって。これANSIだよね。
ここで、戦意喪失して、寝よう。
でも、どこで失敗しているのかわからないので、下に書いておこう。
明日見直すのだ。
std::vector
std::vector
こいつらはうまいこといくけど、
std::vector
が変。
でも、
std::vector
イテレータと、svtとどっちがミスってんのかは、
明日調査予定
/** チェックボックスについたメンバを削除する */ void StudentInfo::memberErace() { HWND hTemp; int iSelected; char sz[80]; int iInitEditNum; std::vector<int> ivtEraceMember; std::vector<int>::iterator pp; std::vector<std::string> svt; std::vector<std::string>::iterator szpp; std::vector<int> ivtSex; // std::vector<int>::iterator pSex; int iRet = MessageBox( hDlg, "チェックされたデータを削除してもよいですか。 \n(ここで[はい]を押下して削除しても、\n設定ボタンを押下しない限りデータは保存されています。)", "削除の確認", MB_YESNO | MB_ICONQUESTION ); if ( iRet != IDYES ) { return; } //何番目のデータが削除ボタンがONになっているかを取得する for (int iCounter = 0; iCounter < 40; iCounter++) { if ( IsDlgButtonChecked( hDlg, IDC_CHECK01 + iCounter ) ) { ivtEraceMember.push_back( iCounter ); } } //イテレータで、表示さ! /* for ( pp = ivtEraceMember.begin(); pp != ivtEraceMember.end(); pp++) { wsprintf( sz, "%d", *pp ); MessageBox( NULL, sz, sz, MB_OK ); } */ //実際に、画面のデータに詰め込んでいく作業をする bool isChecked ; for ( int iCounter = 0; iCounter < this->iMemberNumber; iCounter++ ) { isChecked = false; for ( pp = ivtEraceMember.begin(); pp != ivtEraceMember.end(); pp++ ) { if ( iCounter == *pp ) { isChecked = true; // break; } } if ( isChecked == true ) { SetDlgItemText( hDlg, IDC_EDIT3 + iCounter, "" ); continue; } //データにつめる //名前 GetDlgItemText( hDlg, IDC_EDIT3 + iCounter, sz, sizeof(sz)); // MessageBox(NULL, sz, sz, MB_OK ); svt.push_back( sz ); //性別情報 hTemp = GetDlgItem( hDlg, IDC_COMBO01 + iCounter ); iSelected = SendMessage( hTemp, CB_GETCURSEL, 0, 0); ivtSex.push_back( iSelected ); } //詰め込んだので、次は、吐き出していく iInitEditNum = IDC_EDIT3; char ss[80]; for ( szpp = svt.begin(); szpp != svt.end(); szpp++ ) { wsprintf( ss, "%s", szpp); MessageBox( NULL, (LPCTSTR)szpp, "2", MB_OK); SetDlgItemText( hDlg, iInitEditNum, ss ); iInitEditNum++; } }