問題タブ [c++builder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
8813 参照

c++ - boost::lexical_cast を介して C++Builder AnsiString を std::string に変換する

学校の課題で、Borland C++ Builder を使用して C++ でプロジェクトを実装する必要があります。

VCL はすべての GUI コンポーネントに AnsiString を使用するため、表示するためにすべての std::strings を AnsiString に変換する必要があります。

もちろん機能しますが、書くのが少し面倒で、コードの重複は避けたいです。他のコンテキストで Boost を使用するため、Boost::lexical_cast を取得して AnsiString と連携するヘルパー関数を提供することにしました。これまでの私の実装は次のとおりです。

最初は Access Violation の後に Access Violation を取得しましたが、 .exceptions() のものを追加したので、画像がより明確になります。変換が実行されると、次の例外が発生します。

誰かがそれを修正する方法を知っていて、エラーが発生する理由を説明できますか? 私の C++ の経験は非常に限られています。

逆の変換ルーチンは次のようになります。

多分誰かがここでもエラーを見つけるでしょう:)

敬具!

編集:

現時点では、Jem の編集版を使用していますが、最初は機能します。プログラムをしばらく使用した後、Borland Codeguard は、既に解放された領域でのポインター演算について言及しています。これがどのように関連している可能性がありますか?

Codeguard ログ (私はドイツ語版を使用しており、翻訳には星印が付いています):

Ansistringkonverter.h は、投稿された演算子を含むファイルで、31 行目は次のとおりです。

ご協力いただきありがとうございます :)

0 投票する
2 に答える
1176 参照

delphi - C ++ Builder(およびDelphi)のデフォルトのファイルレイアウト

私はしばらくの間、C ++BuilderIDEに大きな悩みを抱えてきました。コードを作成するときは、コードファイルに常に標準のレイアウトを使用します。私が使用する標準ヘッダーがあります。ファイルのライセンス、ファイル名、日付など。

しかし、これを挿入する場所を見つけることができなかったため、たとえば、新しいユニットを作成するときに、このヘッダーが自動的に挿入されます。もちろん、毎回貼り付けることもできますが、これを行うのに時間を使うのは少しイライラします。

だから私の質問は-デフォルトのC++ファイルのファイルテンプレートを作成したり、既存のファイルを変更して、常に事前定義されたレイアウトで開始するようにすることは可能ですか?私の恐れは、C ++ Builder IDEの他のほとんどのものと同じように、これがハードコーディングされていることです。

現在、新しいユニットを作成すると、次のような.cppファイルが作成されます。

および対応するヘッダーファイル:

これは私が自分で定義したレイアウトに変更したいものです。

Codegear C ++Builder2007を使用しています。

0 投票する
8 に答える
422 参照

c++ - C ++テンプレート:コーディングエラーまたはコンパイラのバグ?

テンプレートを使用してアイテムのstd:listを取得しようとしています。各アイテムには、それを含むリストへのポインターがありますが、コンパイラメッセージが表示され続けます。

これは非常に簡略化されたバージョンのコードです。

しかし、私のコンパイラは次の行でバーフします:-

エラーは次のとおりです。

「これ」がどういうわけかconstになったようですが、理由がわかりません。コンパイラはCodegearC++Builder2009です。

テンプレートを使用することに100%満足しているわけではないことを認めているので、これが私の問題なのかコンパイラなのかわかりません。テンプレートを使用しない同じコードは正常にコンパイルされますが、このように機能させたいアイテム/リストクラスがいくつかあるため、明らかにそれは私が望むものではありません。

また、各アイテムにすべての「所有者」ポインタが含まれないようにするためのより良い手法はありますか?

編集:私は例をあまりにも削除したと思います:「MyList」は実際に新しいメソッドを導入し、「MyItem」は「owner」ポインターを介してアクセスする必要があります。

概要:すべてのコメントと回答に感謝します。受け入れられた答えが言うように、問題は単にBaseListへのポインターとMyListの間の型の非互換性の1つです。

STLコンテナと代替設計から派生することに関して提起された問題も役立ちますが、私が使用したソリューションは、以下のLucTourailleのものと本質的に同じです。

0 投票する
2 に答える
2929 参照

visual-studio - Visual Studio 用のカスタム プロジェクト タイプを作成して、Borland C++ Builder プロジェクトを Visual Studio にビルドする

Visual Studio で BPR プロジェクトをビルドする Visual Studio 用のカスタム プロジェクト タイプの開発を開始したいと考えています。

このプロジェクトを始めるには、いくつかのヒントが必要です。このタイプのプロジェクトのテンプレートはどこにありますか?

私の目標は、Borland C++Builder の見苦しく不安定なインターフェイスを開発プロセスから取り除き、Visual Studio から完全に作業することです。

0 投票する
2 に答える
1451 参照

c++ - TBitBtn と TButton の継承チェーンはどうなりましたか?

私は最近、RAD Studio 2007 プロジェクトを RAD Studio 2009 にアップグレードし始めました。私が気づいたことの 1 つは、一見単純なコードが突然コンパイルに失敗したことです。

コード例:

これはすべてコンパイルに使用されますが、2009年では失敗しています。TBitBtnから派生するために使用される2007 年の継承チェーンを調べTButtonます。したがって、任意のボタン コントロール (つまり、OnClick) で予期されるイベントは、TButtonクラスによって共有されました。したがって、私は自分のTBitBtnクラスを として扱うことができましたTButton

2007 継承チェーン:

  • TBitBtn : TButton

2009 継承チェーン:

  • TBitBtn : TCustomButton
  • TButton : TCustomButton

2009 年には、TButtonTBitButtonの両方がTCustomButtonから派生しています。これは、ボタンのような属性がそこに保持されていれば問題ないと思います。この場合は、代わりにTCustomButtonを処理するようにコードを変更するだけで済みます。残念ながら、TCustomButtonはOnClickのようなものを保持しません。したがって、 TBitBtnをTButtonのように扱うことはできなくなりました。これらのクラスは両方とも、独自の個別のボタンのような属性を持っています (つまり、両方とも独自の OnClick イベントが宣言されています)。つまり、少なくとも、TButtonTBitBtn実装。

これらの一見無害な変更は、不必要な大混乱を引き起こす可能性があるようです。これは奇妙に思えますが、なぜ CodeGear (またはフレームワークの作成者) がこの種のことを行うのかを誰かが知っているかどうか疑問に思っていますか?

さらに重要なことは、この断片化された継承を考えると、 TBitBtnをTButtonのように扱う洗練された解決策はありますか?

0 投票する
1 に答える
228 参照

ide - BDS2006、C ++:ダイアログを作成するための独自のフォームテンプレートを作成するにはどうすればよいですか?

BDS IDEでダイアログを作成すると、それはTFormクラスから派生し、単なる空のフォームになります。私たちのシステムにはすべてのフォームがどのように見えるかについてのGUI標準があるので、テンプレートを作成し、それをプレーンなTFormの代わりに将来のダイアログのベースとして使用するとよいでしょう。

たとえば、すべてのダイアログには、ボタンが右端に配置され、ボタンの間隔が10ピクセルであるカスタムコンポーネントがあります。または、常に同じ場所にある会社のロゴのアイコンがあります。または、ボタンXを閉じるだけが表示され、最小化または最大化は行われません。これで、新しいダイアログを追加する必要があるときはいつでも、[新規/フォーム]を選択し、必要なすべてのコンポーネントと設定を手動で配置する必要があります。テンプレートを定義する可能性は時間の節約になり、これらの標準的な詳細のすべてについて覚えておく必要はありません。

助言がありますか?

0 投票する
3 に答える
3592 参照

delphi - #C ++ Builderで同等の領域?グループコードと同様の方法ですか?

RADStudioにVisualStudioの#regionsに相当するものがあるかどうか疑問に思いました。

私が働いている場所ではDelphiとC++Builder IDEを使用しており、リージョンのようなものを使用できるようにしたいと思っています。

私の同僚と私はまだコードをグループ化する同等の方法を見つけていません...あなたは何か知っていますか?

0 投票する
2 に答える
769 参照

delphi - TSpeedButtonをフラット化しますか?

TSpeedButtonを強制的にフラットに再描画する方法はありますか?

タッチスクリーンモニターを使用している場合、マウスはボタンの外に移動しないため、別のボタンをクリックしても、浮き上がった境界線は画面に表示されたままになります。

0 投票する
4 に答える
10551 参照

exception - C++ Builder でアクセス違反の例外を処理しますか?

私はやろうとしています:

これはアクセス違反の例外をキャッチし、エラー メッセージを表示して処理する必要があると思います。

でも、なぜか単純になってしまう

アクセス違反

完全なメッセージの代わりにメッセージ

モジュール YYY の Violation XXX にアクセスします。アドレス ZZZ に書き込みます。

ところで、ExceptObject()ルーチンは奇妙な理由で NULL を返します。

ここで何が欠けていますか?