ホーム » Iwao の投稿 (ページ 44)

作者アーカイブ: Iwao

2025年5月
 123
45678910
11121314151617
18192021222324
25262728293031

カテゴリー

アーカイブ

ブログ統計情報

  • 114,386 アクセス


tstring Unit::ToName の呼び出し後エラー

もともと CString Unit::ToName(…) だった関数の戻り値を tstring に変更した.
利用している所の多くは,コンパイルエラーとなり Unit::ToName(…).c_str() と修正したが...
次の様な可変引数の修正が漏れていた.
CString unitStr ; unitStr.Format(_T(“%d_%s”),…,Unit::ToName(…)) ;

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

IIS 環境の再設定

2019/12 Win10 IIS 環境に Classic ASP のインストールと設定
2020/10 https://jml.mish.work/various/iis.html


AsTrmM_VC8 が動作しない.
—————————
Microsoft Visual C++ Runtime Library
—————————
Runtime Error!
Program: C:\Temp\…\Release.080\AsTM0129.exe
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application’s support team for more information.
—————————
OK
—————————
AsTrmM_VC6 は OK .
どうも OpenMP がうまくない?


S:\ …\PAto.exe にあると,
ASP 0177 Server.CreateObject に失敗しました 80070003


Win 7 で,Classic ASP は「World Wide Web サービス」-「アプリケーション開発機能」-「ASP」をチェック.
Win10 Classic ASP インストール
以前 XP に設定した時のメモ
Web ページの公開
WWW サービスの設定


2015/02/16
asp ファイルが存在する所を開くと,
  サーバー エラー
  500 – 内部サーバー エラーです。
  検索中のリソースに問題があるため、リソースを表示できません。
サーバ側で動かすと,
  An error occurred on the server when processing the URL. Please contact the system administrator.
  If you are the system administrator please click here to find out more about this error.
どうもデフォルトでは出力されなくなったみたい.


今度は次の様なコードで実行時エラー.
  dim oToPA
  set oToPA = Server.CreateObject(“PAto.AsXxx”)
  Microsoft VBScript 実行時エラー エラー ‘800a01ad’
  ActiveX コンポーネントはオブジェクトを作成できません。
  /Test/Test_1st/DrawVer.asp, 行 6
Win XP では ActiveX.exe を起動すれば良かったが,Win 7 では「管理者」とする必要があるので,
  「コマンドプロンプト」を「管理者として実行」して,その中で exe を起動.


アクセス権が許可されてないと,
  Server オブジェクト エラー ‘ASP 0178 : 80070005’
  Server.CreateObject アクセス エラー
  /Test/Test_1st/DrawVer.asp, 行 6
  許可を確認中に Server.CreateObject の呼び出しに失敗しました。
  このオブジェクトへのアクセスは拒否されます。
アクセス権を設定
Win 7 では IUSER
IUSER のアクセス権の設定


OS が 64 ビットの時,そのままでは ActiveX.dll が起動しない.
32 ビットアプリケーションの有効化


他の PC から,http://win7-iis:8080/ の様に接続できない(localhost:8080 は可能).
  対応方法がよくわからないが,ファイアウォールの設定で 8080 を追加してみたら通る様になった.
ファイアウォールの設定で 8080 を追加


2015/02/17
サーバのオートメーション機能で ini に設定値を保持しているが更新されない
(IUSER はフルコントロールとして存在している).
  Everyone の追加で意図した動作(ini を更新できる)にはなった.
タスクマネージャ オートメーション.exe の動作の表示

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Win 10 TP

Win 10 TP JP 9926 を入れてみた.
詳しく調べてないが,幾つか気になったことを.
VerifyVersionInfo で取る様に直したと思うが,6.2 として認識している?
ウィンドウのフレームの幅が広い?

ドロップダウン付きのツールバー?で,後ろのボタンが切れてしまうことがある.
Web に上げた exe だと?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 8 で _ATL_VER が定義される?

先日書いたコードを MFC ダイアログベースの AP で利用してみると,CRegKey の未定義エラー.
コードは,次の様に「_ATL_VER が定義されていれば…」としている.
  #ifdef _ATL_VER
     CRegKey reg ;
     …
  #endif


—— ビルド開始: プロジェクト: SmpMG, 構成: Debug Win32 ——
コンパイルしています…
SmpMGDlg.cpp
…\i_RegGet.hxx(36) : error C2065: ‘CRegKey’ : 定義されていない識別子です。
…\i_RegGet.hxx(36) : error C2146: 構文エラー : ‘;’ が、識別子 ‘reg’ の前に必要です。
…\i_RegGet.hxx(36) : error C2065: ‘reg’ : 定義されていない識別子です。
…\i_RegGet.hxx(37) : error C2228: ‘.Open’ の左側はクラス、構造体、共用体でなければなりません
…\i_RegGet.hxx(39) : error C2228: ‘.QueryDWORDValue’ の左側はクラス、構造体、共用体でなければなりません
SmpMG – エラー 5、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========


VC 6 や,VC 8 のコンソール AP としての利用はうまくいっている.
自分で書いた部分では,_ATL_VER が定義される様なインクルードは追加してない.
_ATL_VER は (VS8)\VC\atlmfc\include\AtlDef.h にある.


StdAfx.h でインクルードしているものを順に追いかけていくと,
AfxDisp.h 内で Atlナントカ.h がインクルードされている.
同様の部分の VC 6 の方では Atl~.h はなさそう.


どの様にするのがベターなのかわからないが,AtlBase.h をインクルードする様にした.
  #ifdef _ATL_VER
  #include <AtlBase.h>
  #endif

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

‘新しいテキスト ドキュメント.txt’ …

ちょっと変な状態に陥ったのでメモ.


\\DevS\Documents\MICS\Plan\MICSDat\Test_2015 01-03\9LM-2U-J6TRi-2S7M.001\
\\DevS\Documents\MICS\Plan\MICSDat\Test_2014_12\ などでは
[Window Title]
ファイルを作成できません
[Content]
ファイル ‘新しいテキスト ドキュメント.txt’ を作成できません。
開かれている共有ファイルが多すぎます。
[OK]


\\DevS\Documents\MICS\Plan\MICSDat\ だと戻ってこない(エクスプローラが応答なしになる)
\\DevS\Documents\MICS\Plan\ などでは正しく生成できる.


ログオフ時,\\DevS\Documents\MICS\Plan\MICSDat\新しいテキスト ドキュメント.txt ができていた.
再ログオン後,直後はできなかったがしばらくすると可能となった.


現象はどーってことない(再起動すれば直る)が,
問題は,MFC で作成した普通の AP でドキュメントが消失したこと.
その AP は,自動的に %Temp% にバックアップを保持するので完全に失ったわけではないが,
標準の MFC のシリアライズ動作ではうまくないのか?

Is this 投稿 useful? Useful Useless 1 of 1 people say this 投稿 is useful.

新しい Session の作成に失敗しました

127.0.0.1 に対してアクセスすると,
HTTP/1.1 新しい Session の作成に失敗しました


どうもメモリ不足の状態に陥っていたみたいで,不要な AP を終わらせて対応.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

VC 6 UNICODE C2664 , C2679 …

VC 6 コンソール AP で _UNICODE とした時,部分的に効いていない?様なエラー.

--------------------構成: T_RegKey - Win32 Release--------------------
コンパイル中...
T_RegKey.cpp
...\_s_func.hxx(71) : error C2664: 'wcscpy' : 1 番目の引数を 'char *' から 'unsigned short *' に変換できません。
...\_s_func.hxx(72) : error C2664: 'wcslen' : 1 番目の引数を 'const char *' から 'const unsigned short *' に...
...\StringFn.hxx(277) : error C2679: 二項演算子 '=' : 型 'unsigned short [3]' の右オペランドを扱う演算子は定義...
...\StrAryFn.hxx(118) : error C2665: 'wcspbrk' : 2 のオーバーロードは 1 番目の引数を 'char *' から要求の型に変換...
...
T_RegKey.obj - エラー 86、警告 0

先頭で #include <Afx.h> などとすればコンパイルは通る.
または,次の様に UNICODE を定義すれば良いみたい.
  #ifdef _UNICODE
    #ifndef UNICODE
    #define UNICODE
    #endif
  #endif
以前にも同じことを書いていた.


#include <Afx.h> などを追加した場合は,

--------------------構成: T_RegKey - Win32 Release--------------------
リンク中...
uafxcw.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__endthreadex" は未解決です
uafxcw.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__beginthreadex" は未解決です
c:\...\Release.060/T_RegKey.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー

T_RegKey.exe - エラー 3、警告 0

「プロジェクトの設定」-「一般」の「M..F..C..」で「共有 DLL で MFC を使用」などとする.


UNICODE の定義は,(VS12)\VC\AtlMFC\Include\AfxV_W32.h を参照して i_Define.hxx に追加した.
Windows.h より前に UNICODE が定義されてない場合は,i_Define.hxx をインクルードすれば良い.


2020/09 コンソール AP での define

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

コンソール AP でレジストリ読み取り

コンソール AP で,レジストリを読み取るために以下の様な関数を用意した.


  int Reg_GetInt (HKEY hKey,LPCTSTR subKey,LPCTSTR ent,const int defValue=0)
  {
     DWORD value = defValue ;
  #ifdef _ATL_VER
     {
       CRegKey reg ;
       reg.Open(hKey,subKey) ;
     #if (_ATL_VER >= 0x700)
       reg.QueryDWORDValue(ent,value) ;
     #else
       reg.QueryValue(value,ent) ;
     #endif
       }
  #else
     {
       HKEY hSecKey = NULL ;
       LONG openStatus = ::RegOpenKeyEx(hKey,subKey,0,KEY_READ,&hSecKey) ;
       if (hSecKey == NULL) { return value ; }
       DWORD type = REG_NONE ;
       DWORD count = sizeof(DWORD) ;
       LONG queryStatus = ::RegQueryValueEx(hSecKey,ent,NULL,&type,(LPBYTE)&value,&count) ;
       ::RegCloseKey(hSecKey) ;
       }
  #endif
     return int(value) ;
     }
*::Reg~ などのエラーチェックは省いている.
呼出すのはこんな感じ.
  int value = ::Reg_GetInt(HKEY_CURRENT_USER,_T(“Software\\Iwao\\Test\\RegAcc”),_T(“T_RegKey_DW”)) ;


CWinApp::GetProfileInt などが使えないかとやってみたが,…
1. AfxGetApp() を呼びだしても,NULL で戻ってくる.
  次の様に領域を確保.
    CWinApp theApp;
2. SetRegistryKey(key) が直接呼びだせないので,
  class C_SRK_WinApp : public CWinApp {
  public:
       void SetRegKey (LPCTSTR key) { SetRegistryKey(key) ; }
     } ;
  変数の確保は次の様に変更.
    C_SRK_WinApp theApp ;
3. SetRegistryKey の中で ASSERT(m_pszAppName != NULL)
  以下を追加して,CWinApp を初期化.
     AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0) ;
4. これで CWinApp::GetProfileInt は利用できるようになるが,CWinApp::m_pszProfileName が邪魔.
   C_SRK_WinApp* app = (C_SRK_WinApp*)AfxGetApp() ;
   int val = app->GetProfileInt(_T(“Test\\RegAcc”),_T(“T_RegKey_DW”),0) ;
  HKCU\Software\Iwao\(m_pszProfileName)\Test\RegAcc となってしまう.
5. m_pszProfileName を _T(“”) とすることにより,意図した値を取得できる様にはなった.
   C_SRK_WinApp* app = (C_SRK_WinApp*)AfxGetApp() ;
   if (app != NULL) {
     AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0) ;
     app->SetRegKey(_T(“Iwao”)) ;
     free((void*)app->m_pszProfileName) ;
     app->m_pszProfileName = _tcsdup(_T(“”)) ;
     int val = app->GetProfileInt(_T(“Test\\RegAcc”),_T(“T_RegKey_DW”),0) ;
     }


コンソール AP で CWinApp::GetProfileInt などを使うことは,やめ.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

コンテキストメニューが表示されない

あるダイアログベースの exe をテストしていて,右クリックでメニューが表示されない現象となった.
ボタンによる動作のメニューは表示される.
デバッガで追いかけると,次の様なコードの CMenu::LoadMenu が FALSE となっていた.
  void CXxxxDlg::PopupSingleSel(CPoint pt,CWnd *wnd)
  {
     CMenu menu ;
     if (!menu.LoadMenu(IDR_SINGL_SEL)) { return ; }
     CMenu* pPopup = menu.GetSubMenu(0);
     …
     }
ボタンによるメニュー表示は次のコード.
  void CXxxxDlg::OnOther()
  {
     CMenu menu ;
     if (!menu.LoadMenu(IDR_OTHER)) { return ; }
     CMenu* pPopup = menu.GetSubMenu(0);
     …
     }


メニューが表示されない原因はリソース不足.
不要なエクスプローラのウィンドウを閉じて,意図した動作となることを確認.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

double -> long

double の値を long にキャストした時,VC 8 で思った動作ではなかったので調べてみた.
テストに使用したのは次の様な単純なコード.


// T_DtoI.cpp
#include <iostream>
int main(int argc, char* argv[])
{
  double d8 = 1/7. ;
  for (int index=0 ; index<25 ; index++) {
    d8 = (d8 * 7) ;
    __int64 i8 = __int64(d8) ;
    long l4 = long(d8) ;
    printf ((“%15g\t%25I64d\t%20I64x\t%15ld\t%15x\n”),d8,i8,i8,l4,l4) ;
    }
  return 0;
  }


d8 の値を /7 と *7 としているのはあまり意味はない.


C:\Users\Iwao>\\DevXP\C_Drive\Temp\TestCPP\T_DtoI\Release.060\T_DtoI.exe
              1                         1                          1                  1               1
              7                         7                          7                  7               7
             49                        49                         31                 49              31
            343                       343                        157                343             157
           2401                      2401                        961               2401             961
          16807                     16807                       41a7              16807            41a7
         117649                    117649                      1cb91             117649           1cb91
         823543                    823543                      c90f7             823543           c90f7
    5.7648e+006                   5764801                     57f6c1            5764801          57f6c1
   4.03536e+007                  40353607                    267bf47           40353607         267bf47
   2.82475e+008                 282475249                   10d63af1          282475249        10d63af1
   1.97733e+009                1977326743                   75db9c97         1977326743        75db9c97
   1.38413e+010               13841287201                  339014821          956385313        39014821
    9.6889e+010               96889010407                 168f08f8e7        -1895237401        8f08f8e7
   6.78223e+011              678223072849                 9de93ece51         -381759919        e93ece51
   4.74756e+012             4747561509943                45160b7a437         1622647863        60b7a437
   3.32329e+013            33232930569601               1e39a5057d81        -1526366847        a5057d81
   2.32631e+014           232630513987207               d39383266e87        -2094633337        83266e87
   1.62841e+015          1628413597910449              5c908960d05b1        -1777531471        960d05b1
   1.13989e+016         11398895185373144             287f3c1a5b27d8          442181592        1a5b27d8
   7.97923e+016         79792266297612000            11b7aa4b87e16e0        -1199696160        b87e16e0
   5.58546e+017        558545864083283968            7c05a810b72a000          192061440         b72a000
   3.90982e+018       3909821048582987776           3642798750226000         1344430080        50226000
   2.73687e+019      -9223372036854775808           8000000000000000                  0               0
   1.91581e+020      -9223372036854775808           8000000000000000                  0               0
  
C:\Users\Iwao>\\DevXP\C_Drive\Temp\TestCPP\T_DtoI\Release.080\T_DtoI.exe
              1                         1                          1                  1               1
              7                         7                          7                  7               7
             49                        49                         31                 49              31
            343                       343                        157                343             157
           2401                      2401                        961               2401             961
          16807                     16807                       41a7              16807            41a7
         117649                    117649                      1cb91             117649           1cb91
         823543                    823543                      c90f7             823543           c90f7
    5.7648e+006                   5764801                     57f6c1            5764801          57f6c1
   4.03536e+007                  40353607                    267bf47           40353607         267bf47
   2.82475e+008                 282475249                   10d63af1          282475249        10d63af1
   1.97733e+009                1977326743                   75db9c97         1977326743        75db9c97
   1.38413e+010               13841287201                  339014821        -2147483648        80000000
    9.6889e+010               96889010407                 168f08f8e7        -2147483648        80000000
   6.78223e+011              678223072849                 9de93ece51        -2147483648        80000000
   4.74756e+012             4747561509943                45160b7a437        -2147483648        80000000
   3.32329e+013            33232930569601               1e39a5057d81        -2147483648        80000000
   2.32631e+014           232630513987207               d39383266e87        -2147483648        80000000
   1.62841e+015          1628413597910449              5c908960d05b1        -2147483648        80000000
   1.13989e+016         11398895185373144             287f3c1a5b27d8        -2147483648        80000000
   7.97923e+016         79792266297612000            11b7aa4b87e16e0        -2147483648        80000000
   5.58546e+017        558545864083283968            7c05a810b72a000        -2147483648        80000000
   3.90982e+018       3909821048582987776           3642798750226000        -2147483648        80000000
   2.73687e+019      -9223372036854775808           8000000000000000        -2147483648        80000000
   1.91581e+020      -9223372036854775808           8000000000000000        -2147483648        80000000

VC 7 , 7.1 は VC 6 と同等.VC 12 までは VC 8 と同等.
Mac 64 ビットでは,long が 64 ビットのため?そのままだと VC 6 と同等になる.
long を int として 32 ビットとすると VC 8 と同等.


ここまでは,long の範囲を超えたためと理解できるが,unsigned long の場合はまた動作が異なる.
    long l4 = long(d8) ;
    ULONG u4 = ULONG(d8) ;
    printf ((“%15g %25I64d %20I64x %12ld %10x %12ld %10x\n”),d8,i8,i8,l4,l4,u4,u4) ;

今回表面化したバグは,次のコード.
  long now_Tick = long(GetTickCount_s()*1000) ;
得た値を覚えておき,次のタイミングで 1 秒以上の開きがあるかを計測したかった.
最初の頃はわからなかったが,
 先日 25 日(0x7FFFFFFF 2,147,483,647)を過ぎて 0x80000000 となってしまっていた.
MSDN 浮動小数点型からの変換

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

GetDIBits

GetDIBits を利用していて,最初うまく取れなかったのでメモ.


lpvBits に NULL が指定できるとのことなので,
  ::GetDIBits(hDC,hbm,0,bmap.bmHeight,NULL, &bmif,DIB_RGB_COLORS) ;
しかしうまく取れない.原因は,biSize の指定がされてなかったため.
  bmif.bmiHeader.biSize = sizeof(BITMAPINFOHEADER) ;


以下の様に,BITMAPINFO を求めてから,もう一度呼び出し情報は取れる様になった.
    ::GetDIBits(hDC,hbm,0,bmap.bmHeight,NULL, &bmif,DIB_RGB_COLORS) ;
  if (::GetDIBits(hDC,hbm,0,bmap.bmHeight,&bits[0], &bmif,DIB_RGB_COLORS) != 0) {
    ….
    }
が,bmif の部分を stack としていて,オーバーフローしている.
  BITMAPINFO bmif ; memset(&bmif, 0, sizeof(BITMAPINFO)) ;
デバッグ用に,次の様に 0xfe で初期化して渡してみると
  v_char bmif ; bmif.resize(sizeof(BITMAPINFO)+sizeof(RGBQUAD)*256,-2) ;
   memset(&bmif[0],0, sizeof(BITMAPINFO)) ;
  BITMAPINFO* pbmi = (BITMAPINFO*)&bmif[0] ;

00036C40  28 00 00 00 02 00 00 00 02 00 00 00 01 00 20 00  (............. .
00036C50  03 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00  ................
00036C60  00 00 00 00 00 00 00 00 00 00 FF 00 00 FF 00 00  ................
00036C70  FF 00 00 00 FE FE FE FE FE FE FE FE FE FE FE FE  ................


どうも,1 回目の GetDIBits で,pbmi->bmiHeader.biCompression が BI_BITFIELDS となっている.
  … the color table consists of three DWORD color masks that specify the red, … とある.
以下の様に,BI_RGB を再設定する様にした.
    ::GetDIBits(hDC,hbm,0,bmap.bmHeight,NULL, pbmi,DIB_RGB_COLORS) ;
    pbmi->bmiHeader.biCompression = BI_RGB ;
  if (::GetDIBits(hDC,hbm,0,bmap.bmHeight,&bits[0], pbmi,DIB_RGB_COLORS) != 0) {
    ….
    }
HBM_Fn.hxx
i_DIB_Fn.hxx

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MessageBar クラスと OpenMP

新しい Message クラスを使用して,OpenMP 対応の動作のテスト.
void CTSttBView::OnTestDrawBar2()
{
  Message tmp ;
  ElapseTick et ;
  #define BAR_COUNT_2 1000000
  #ifdef _OPENMP
    #pragma omp parallel for
  #endif
  for (int i=0 ; i<100 ; i++) {
    Message bar ;
    bar.SetBar (_T(“Test Message 1 M * 100”),BAR_COUNT_2,RGB(0,255,0)) ;
    for (int index=0 ; index<BAR_COUNT_2 ; index++) {
      bar.SetBarInc() ;
      }
    }
  DWORD elapseT = et.GetElapse() ;
  CString str ; str.Format(_T(“%.2f 秒”),elapseT/1000.) ;
  AfxMessageBox(str) ;
  }
1 億回 SetBarInc を呼出していて,10 秒程度だったのが,#pragma omp parallel for で 20 秒程度になってしまった.


inline bool MessageBase::SetBarInc (void)
{
  if (GetBarMax() == 0) { return false ; }
  if (GetBarCount() < GetBarMax()) { B_Counter++ ; }
  else { B_Counter = 0 ; } // reset
  IncCounterR() ;
  {
    long lastPos = long(100*(GetBarCount()-1)/GetBarMax()) ;
    long new_Pos = long(100*(GetBarCount()-0)/GetBarMax()) ;
    if (lastPos == new_Pos) { return true ; }
    }
  #ifdef _WINDOWS
  #ifdef _MFC_VER
  #ifdef _OPENMP
    if (AfxGetMainWnd() == NULL) { return false ; }
  #endif
  #endif
  #endif
  return SetBarCount(B_Counter) ;
  }
AfxGetMainWnd() を呼出す回数を減らすことにより,3 秒程度に.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Win 8 環境が…

AP テスト用の Win 8 環境で,今まで Win 8.1 にならない様にしていたのに,…
回避手順を間違えて,8.1 になってしまった.
Win 8 に戻す手段はなさそうで,困ったことに.


MBP は 12/17 に Yosemite に.
今回は時間をおいたので,それ程問題はなさそう.


自分でも AP を作っているのであまり言えないが,(過去に何度かやらかしているので)
Update の品質や,回避する手段などは改善してほしい.
ここ 2 年位で,かなりの時間を取られた様に思う.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

デバッグビルドで C2061 ‘_DebugHeapTag_func’

以前(2014/04/25 の exe が存在する)は通っていたのに,…


------ ビルド開始: プロジェクト: BLCombi, 構成: Debug Win32 ------
ComPrj01.cpp
c:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocmon(283) : error C2061: 構文エラー : 識別子 '_DebugHeapTag_func'
c:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocmon(281): クラス テンプレート のメンバ関数 'size_t std::moneypunct<_Elem,_Intl>::_Getcat(const std::locale::facet **,const std::locale *)' のコンパイル中
with
[
_Elem=char,
_Intl=true
]
c:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocmon(908) : コンパイルされたクラスの テンプレート のインスタンス化 'std::moneypunct<_Elem,_Intl>' の参照を確認してください
with
[
_Elem=char,
_Intl=true
]
BLCombi - エラー 1、警告 1

------ ビルド開始: プロジェクト: BLCombi, 構成: Debug Win32 ------ ComPrj01.cpp c:\program files\microsoft visual studio 8\vc\include\xlocmon(273) : error C2061: 構文エラー : 識別子 '_DebugHeapTag_func' c:\program files\microsoft visual studio 8\vc\include\xlocmon(271): クラス テンプレート のメンバ関数 'size_t std::moneypunct<_Elem,_Intl>::_Getcat(const std::locale::facet **)' のコンパイル中 with [ _Elem=char, _Intl=true ] c:\program files\microsoft visual studio 8\vc\include\xlocmon(887) : コンパイルされたクラスの テンプレート のインスタンス化 'std::moneypunct<_Elem,_Intl>' の参照を確認してください with [ _Elem=char, _Intl=true ] BLCombi - エラー 1、警告 0
------ ビルド開始 : プロジェクト : BLCombi, 構成 : Debug Win32 ------ ComPrj01.cpp c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xlocmon(249) : error C2061: 構文エラー : 識別子 '_DebugHeapTag' c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xlocmon(247): クラス テンプレートのメンバ関数 'size_t std::moneypunct<_Elem,_Intl>::_Getcat(const std::locale::facet ** )' のコンパイル中 with [ _Elem=char, _Intl=true ] c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xlocmon(828) : コンパイルされたクラスのテンプレートのインスタンス化 'std::moneypunct<_Elem,_Intl>' の参照を確認してください with [ _Elem=char, _Intl=true ] BLCombi - エラー 1、警告 0
------ ビルド開始 : プロジェクト : BLCombi, 構成 : Debug Win32 ------ ComPrj01.cpp c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xloctime(539) : error C2061: 構文エラー : 識別子 '_DebugHeapTag' c:\Program Files\Microsoft Visual Studio .NET\Vc7\include\xloctime(539) : error C2143: 構文エラー : ';' が ')' の前にありません。 BLCombi - エラー 2、警告 0

VC 6 や VC 10 , 11 , 12 では 通る.
検索すると, #define new DEBUG_NEW の定義の様であるが,この ComPrj01.cpp でどうすべきかが不明.


本来は,ComPrj01.cpp でインクルードしているファイルを変更すべきなのだろうが,いい方法がわからない.
ComPrj01.cpp でインクルードしているものの順番を変更することで,通る様にはなった.


2024/11/11
https://dev.mish.work/wordpress/?s=C2061

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

コンボボックスで文字化け

「今まで CHS で使用していた環境を日本語に切替えたのに,一部 “漢字” で表示されたままになっている」と問合せ.
UNICODE.exe なので,MultiByte との変換の時には問題が発生することは知っていたが,…
メニューやダイアログのタイトルなどは問題ないが,コンボボックスで文字化けしていた.
「コントロールパネル」-「地域と言語」-「管理」タブ-「Unicode 対応…」-「システム ロケール…」が「日本語」でなかった.


UNICODE.exe でも,コンボボックスでは文字化けすることは知らなかったので,exe を作って調べてみた.
MBCS.exe .半角カタカナなども文字化けしてしまう.


UNICODE.exe .コードで追加している場合は,正しく表示される.
m_ComboD.AddString(_T(“1234567890”)) ;
m_ComboD.AddString(_T(“12345”)) ;
m_ComboD.AddString(_T(“ABCDEFGHIJ”)) ;
m_ComboD.AddString(_T(“ABCDE”)) ;
m_ComboD.AddString(_T(“あいうえお”)) ;
m_ComboD.AddString(_T(“亜意卯絵尾”)) ;


VC 2013 で同様に作成してみたが,

最初,リソースエディタで複数指定する方法がわからなかったが,セミコロンで区切れば OK .


コンボボックスの表示データを,リソースで指定している場合に文字化けしてしまう.
ComboBox.zip


これらに関して検索してみると,
UNICODEアプリケーションで文字化けが発生する
リソースファイルの文字列のUNICODE化

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Afx.h 追加でメモリリーク

コンソール AP を作成していて,ある時からメモリリークが.
Afx.h の関係とはその時予想がついたが,無意識にコードを変更して解消していたので整理.


Afx.h より前に iostream があるとリークが発生.
同じことをこの時にも書いてた.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

on error …

久々に VBS を書いていて,少し時間がかかったのでメモ
コードを修正して,実行しても意図した動作で実行されない.
原因は on error resume next などとしていたため.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

printf(“%c”,’\a’) を cout で

_tprintf(_T(“%c”),_T(‘\a’)) を std::tout に変更しようとして,以下の様にしてみた.
  std::tout << ‘\a’ ;
VC 6 で,MBCS では意図した動作 (BEL) となるが,UNICODE の場合 “7” が表示される.


一度文字列のバッファに入れれば良いと気づき,
  std::tout << tstring(_T(“\a”)) ;

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

無効なパスが含まれています

VC 8 のプロジェクトのリリース版でビルド,実行したら,
—————————
MSW_0924
—————————
無題のファイル には無効なパスが含まれています。
—————————
OK
—————————
AFX_IDP_FILE_BAD_PATH
リビルドで正しく起動する様になった.
原因はよくわからないが,リソース辺りか?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

xcode + glut

「Command Line Tool」としてプロジェクトを作成.
「GLUT」を追加.


10.9 になったこと?により出力される次の様なワーニングをでない様にするために 10.8 に.
/Users/Iwao/…/main.cpp:116:2: ‘glutInit’ is deprecated: first deprecated in OS X 10.9

インクルードパス設定場所は,「Build Settings」−「Search Paths」−「Header Search Paths」
glut.h のインクルードは以下の様にしている.
  #ifdef __APPLE_CC__
    #include <GLUT/glut.h>
  #else
    #include <GL/glut.h>
  #endif

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.