• 締切済み

BCB5 「コンパイラ内部エラー」の回避方法

Borland C++ Builder5 を使っています。 WindowsXP Pro SP2の環境です。 ダイアログを表示するプログラムを作ろうとすると、コンパイルエラーになります。 この回避方法をお教え下さい。 親Form1のメニューを選択した時に OptionDlg->ShowModal(); で表示しようとしています。 OptionDlgは、「ファイル-新規-ダイアログ」で作ったダイアログです。 ダイアログのNameプロパティに「OptionDlg」と指定し、ソースはOptionDlgu.cppで 登録しました。 親Formで、ヘッダーファイルの追加もしています。 このような状態でコンパイルすると、 sysutils.hpp( ):F1004コンパイラ内部のエラー というメッセージが出て、コンパイル出来ません。 上記の方法で、ダイアログを表示するだけのサンプルプログラムを作ると、 正常にコンパイル出来ます。 初心者の私には、sysutils.hppが何を記述している部分なのか理解出来ていない のですが、今までにも同様の手順でダイアログを出すプログラムを作っていて、 何も問題なかったので、途方に暮れています。

みんなの回答

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

マイコンピュータのプロパティで、ユーザー環境変数の「TEMP」と「TMP」に設定されているフォルダが、長いフォルダ名になってませんか? (C:\Documents and Settings\ユーザー名\tempなど) Cドライブのルートに「TEMP」という空フォルダを作成し、ユーザー環境変数の「TEMP」と「TMP」を「C:\TEMP\」に設定すると問題が解消する場合があります。 (コンパイラ内部の「tempフォルダのパス位置を記憶するバッファのサイズ」が小さく、バッファ溢れしてコンパイラ自身がメモリを壊している可能性があります)

Han1344
質問者

お礼

chie65536さん、ありがとうございました。 結論から述べると、まだ解決していません。 コントロールパネル-システム-詳細設定で、環境変数を変更しました。 C:\TEMP もちろん、空フォルダーも作りました。 その状態でコンパイルしたのですが、同じ現象が出ます。 ちなみに、エラーとなっているsysutils.hppは、2つめのpublic:の TObject.Destroy の部分です。 class DELPHICLASS Exception; class PASCALIMPLEMENTATION Exception : public System::TObject { 略 private: 略 public: 略 public: #pragma option push -w-inl /* TObject.Destroy */ inline __fastcall virtual ~Exception(void) { } #pragma option pop };

関連するQ&A

  • C言語(BCB)で双方向リストを操作する方法

    Borland C++ Builder5 でプログラミングしています。 親Formで、ファイルを読み、双方向線形リストを作っています。 子Form(ダイアログ)で、この線形リストにノードを追加したいのですが、うまくコンパイル出来ません。 どなた様か、ご指導お願いします。 まず、構造体として次のように定義しています。(Form1のヘッダーファイル) typedef struct _UkeM{ char id[7]; // 途中略 struct _UkeM *beforP; struct _UkeM *nextP; } UkeM; UkeM *UkeTop, *UkeNow, *UkeEnd; 当然これらの定義は、子Formでも操作したいので、public: として定義されています。 親Formで領域を確保するには、 UkeNow = new UkeM; と実行し、最尾ノードのnextPなどにアドレスを格納しています。 この親Formでの処理はコンパイルも通り正しく実行されています。 さて、子Formで、このリストにノードを作ってつなげたい、と思っています。 子Formでは、単純に Form1->UkeNow = new Form1->_UkeM; とやってみたのですが、「型名が必要」というエラーで通りません。 どうも、newの右側が良くないようです。 子Formで、このリストを参照するだけなら全く問題なく操作できています。 (例えば、Label1->Caption = Form1->UkeNow->id;) newだけがうまく出来ません。 子Formでのnewのやり方についてご指導をお願いします。

  • コンパイラによってエラーが出たり出なかったり

    構造体をポインタでつなぐリスト構造を使ったソースを書いて、Borland C++ Compiler 5.5 でコンパイルしたものを実行するとエラーで止まってしまいました。 コンパイル時には何も警告が出ませんでした。 しかし、ソースを何度見てもバグらしいコードが見つからなかったので、試しに Microsoft .NET Framework SDK でコンパイルしてみたところ、こちらも警告も出ずにコンパイルが通って、実行してみたらこんどは正常に動作しました。 コンパイラによって、実行時にエラーが出たり出なかったりするということは初めてなのでその原因を知りたくて質問しました。 どういった場合にこのようなことが起こるのでしょうか。 Borland C++ で出たエラーは、おそらくセグメントエラーだと思います。 今のところ正常に動いているのですが、なにかデンジャラスなコードを書いてしまった気がして気持ち悪いです。

  • condefs.hはどこにあるの?

    #include <stdio.h> #include <windows.h> #ifdef __BORLANDC__ #include <condefs.h> #endif をヘッダに含むプログラムspitest.cppを無償コンパイラのボーランドC++5.5でコンパイルすると Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland spitest.cpp: エラー E2209 spitest.cpp 8: インクルードファイル 'condefs.h' をオープンできない *** 1 errors in Compile *** とエラーがでました。 どうしたらいいのでしょうか?

  • Borland C++ Builderで簡単なC言語プログラムの作成・実行

    Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか? DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。 一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。 Formオブジェクト(?)を作成しておくとコンパイルできます。 Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。 DOS窓でのコンパイル・実行はできます。 事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。 よろしくお願いします。

  • BCB5からBCB6へのコンポーネント移行でエラー

    OS:Windows XP Pro .pasのコンポーネントをインストールしようとすると下記のエラーが発生します。 [リンカエラー]外部シンボル'__fastcall Outline::TCustomOnline::~TCustomOutline()'が未解決(C:\Program Files\Borland\CBulder6\LIB\BCBSMP.LIB|.\cdiroutl.cppが参照) どなたか原因等知っていましたらご教授願います。

  • eclipseのコンパイルエラーについて

    現在、Eclipse+borlandでdirectxのプログラムを作成しています。 しかし、eclipseでコンパイルをするとコンソールに ”プログラムが大きすぎてメモリに入りません”とエラーが 表示されます。 borlandでコンパイルをすると問題なく実行ファイルが生成されます。 eclipseでコンパイルする場合は、設定が必要なのでしょうか?

  • コンパイラについて

     今まで普通に使っていたフリーソフトのコンパイラで、少し長めのファイルを読み書きするようなプログラムをコンパイルしたのですが、exeファイルが途中で止まってしまいます。  一方違う市販のコンパイラを使うと、コンパイル&実行共にうまくいきます。また、両者で作成されたexeファイルは容量も違い、後者の方はobjファイルも同時に作成されます。  これは一体どういうことなのでしょうか?プログラムの内容は同じなのに、コンパイラによってexeファイルでエラーが出る、出ないがあるのでしょうか?  また話とは逸れますが、プログラムの処理結果を扱う時に、txtファイルで表示させているのですが、必要な箇所だけ、コピー&ペーストするにはどうしたらいいでしょうか?  例えば何万行のtxtファイルから(必要な箇所を検索等で探し)必要な箇所より上全部または下全部の部分だけを、消去したい時どうしたら手早く消去できるのでしょうか?今私がやっている方法ではctr+(pgup or pgdn)で選択部分を増やしていき消去!ですが、スピードが遅いです。ctl+Aだと全て選択になってしまいますし、どなたかいい方法ご存知な方いらっしゃらないでしょうか?

  • コンパイラC++のDL方法

    こんにちは。 大学の課題で、C言語を使ったプログラムの課題が出されており、 それを書きあげるために、C++コンパイラのDLが必要です。 なので、 http://www.embarcadero.com/jp/products/cbuilder/free-compiler から、C++コンパイラをDLしました。 そこで手順に従って、 freecommandlinetools2 freeturbodebugger をインストールしたまでは良かったのですが、 次の手順が以下のようになっています。 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブと フォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib" この中で、 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 の意味がわからないです。新しいファイルを作って保存すればよろしいのですか? どなたか、ご回答をお願いします。

  • g++ というコマンドのコンパイラ

    "g++" というコマンドでC++の".cpp" ファイルをコンパイルできるウィンドウズ用のコンパイラを教えていただけないでしょうか。(出来ればフリーの) また、その使い方を日本語で易しく説明したサイトを教えていただけないでしょうか。

  • xpressive.hpp をオープンできない

    現在、code gear c++ builder 2009 でboostに関するプログラムを勉強してます。 正規表現のプログラムをやってみたくて、インクルードファイルとして、 #include <boost/xpressive/xpressive.hpp> こちらを宣言したのですが、次のようなエラーが出てきました。 [BCC32 エラー] test_boost.cpp(12): E2209 インクルード ファイル 'boost/xpressive/xpressive.hpp' をオープンできない [BCC32 エラー] test_boost.cpp(14): E2316 'xpressive' は 'boost' のメンバではない [BCC32 エラー] test_boost.cpp(14): E2282 名前空間名が必要 このようなエラーが出てくるのですが、これを解決する方法はないでしょうか? どうぞ、ご教授の程よろしくお願い致します。