C++Builder メモ           戻る







































































LME288のリンカー エラーの回避方法を試行錯誤してみました




































































unsigned char *ucBuf,*ucBuf1; DWORD dwLen; AnsiString FNAME; FILE *fp; WIN32_FIND_DATA dat; char c; AnsiString w,sBuf;
  • [BCC32 エラー] main.cpp(37): E2015 '_fastcall Sysutils::IntToStr(int) at c:\program files\embarcadero\rad studio\8.0\include\windows\rtl\SysUtils.hpp:2183' と '_fastcall Sysutils::IntToStr(__int64) at c:\program files\embarcadero\rad studio\8.0\include\windows\rtl\SysUtils.hpp:2186' の区別が曖昧

      MAIN_F→MaskEdit2→Text="Line= "+IntToStr(point.y)+" : "+IntToStr(point.x);

      →   MAIN_F→MaskEdit2→Text="Line= "+IntToStr((int)point.y)+" : "+IntToStr((int)point.x);



































  • [BCC32 エラー] Unit1.cpp(151): E2034 'wchar_t *' 型は 'const char *' 型に変換できない

       fp=fopen(Form1→Edit2→Text.c_str(),"w+b");

       → fp=fopen(AnsiString(Form1→Edit2→Text).c_str(),"w+b");

       Application→MessageBox("プラウザを解析しました","報告",0);

        → Application→MessageBox(L"プラウザを解析しました",L"報告",0);

        Application→MessageBoxA(path.c_str(),"報告",0);

       → Application→MessageBoxA(UnicodeString(path).c_str(),L"報告",0);



      char *tmp;
      RichEdit1→SetSelTextBuf(tmp);


      →  String t=tmp;
          RichEdit1→SetSelTextBuf(t.c_str());

       char svName[BUFSIZE];
           strcpy(svName,Form1→ComboBox1→Text.c_str());


        → strcpy(svName,AnsiString(Form1→ComboBox1→Text).c_str());


  • [bcc32 エラー] Unit5.cpp(152): E2034 'char *' 型は 'const wchar_t *' 型に変換できない
    修正前のソ−ス AnsiString drv; drv=Form5->Label1->Caption.SubString(1,3); SetVolumeLabel(drv.c_str(),Edit1->Text.c_str());
    修正後のソ−ス (1:、2:、3: 何れもエラ−は出なくなる)  1:   String path,drv;   drv=Form5->Label1->Caption.SubString(1,3);   wchar_t* L0=new wchar_t[drv.Length()+2];   wcscpy(L0, drv.c_str());   path=Edit1->Text;   wchar_t* L1=new wchar_t[path.Length()+2];   wcscpy(L1, path.c_str());   SetVolumeLabel(L0,L1);  2:   String drv;   drv=Form5->Label1->Caption.SubString(1,3);   SetVolumeLabel(drv.c_str(),Edit1->Text.c_str()))  3:   TCHAR drv;   drv=Form1->Label9->Caption.SubString(1,3);   SetVolumeLabel(drv.c_str(),Edit1->Text.c_str());   GroupBox1->Caption=Edit1->Text;






  • [BCC32 エラー] main.cpp(107): E2034 '_WIN32_FIND_DATAW' 型は '_WIN32_FIND_DATAA' 型に変換できない


























































    [BCC32 エラー] main.cpp(237): E2357 参照は 'AnsiString' で初期化されているが 'UnicodeString' 型の左辺値が必要 [BCC32 エラー] main.cpp(237): E2340 1 番目のパラメータは UnicodeString & 型として定義されているので char * 型は渡せない
       AnsiString drv;
       if(GetDrvInfo(drv) !=-1)


    String drv;
       if(GetDrvInfo(drv) !=-1)
    [BCC32 エラー] Main.cpp(24): E2357 参照は 'void *' で初期化されているが 'void *' 型の左辺値が必要
       HDROP &Drop = (HDROP)Message.Drop; int drop_files = DragQueryFile(Drop, 0xFFFFFFFF, NULL, 0);

    → HDROP &Drop〜の行を削り、 int drop_files = DragQueryFile(( void *)Message.Drop, 0xFFFFFFFF, NULL, 0);
      UINT DragQueryFile(    HDROP hDrop, // ファイル名構造体のハンドル    UINT iFile, // ファイルのインデックス番号   LPTSTR lpszFile, // ファイル名を格納するバッファ   UINT cch // バッファのサイズ
























  • [BCC32 エラー] catlog1.cpp(1174): E2335 このコンテキストではオーバーロード 'Pos' が曖昧
    Pos
      → iPos





















































































    Form1で String TMP;として、Form2では extern AnsiString TMP; としてもエラ−とならない

    ただ、Form2で TMP=TESTとしても、Form1では文字化けしてしまい、C++Builder6.0のプログラ・を XE用に直すときに注意しないと文字化けのバグで悩みます。

























































    String t0; wchar_t t1[200]; char w[250]; t0="D:\\Test"; sprintf(w,"%40s",AnsiString(t0)); swprintf(t1,L"%40s",t0);


























































  • [BCC32 エラー]  E2034 wchar_t型はchar*型に変換できない、 E2342 パラメ−タ dstはchar*型として定義されているので wchar_tは渡せない

    //-----------------------------------------------------------------------------------------
      BC6.0のソース strcpy(lbl.lfFaceName, "@MS ゴシック") をXE3でコンパイルすると上記エラ−が出るが、StrPCpy(lbl.lfFaceName, L"@MS ゴシック")でOK

    //------------------------------------------------------------------------------------------
      String SFNAME,DFNAME;
      CopyFile(SFNAME,DFNAME,false)をコンパイル

      [bcc32 エラー] Unit1.cpp(253): E2342 パラメータ 'lpExistingFileName' は const wchar_t * 型として定義されているので UnicodeString は渡せない

      CopyFile(SFNAME.c_str(),DFNAME.c_str(),false) とすれば OK
    //---------------------------------------------------------------------------------------------