問題タブ [c++builder-xe2]

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 投票する
1 に答える
1403 参照

c++ - マクロ: __VA_ARGS__ の各値を変更するにはどうすればよいですか

C++ Builder XE3 を使用しています。

現在、私は以下のようなマクロを持っています:

ここで、すべての引数を AnsiString にしたいと考えています。以下のような引数: メッセージを処理するのは簡単です。

しかし、VA_ARGSの場合、引数を処理して、配置されるすべての引数OTHER_LIB_LOGが AnsiString であることを確認する方法がわかりません。

のソースコードを変更するのは難しい OTHER_LIB_LOGので、マクロでこれを行う必要があります。

どんな助けでも大歓迎です。

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

c++ - C++ Builder XE2 で VCL フォーム クラスの名前を変更する

職場には、かなり大きな C++ VCL フォーム アプリケーションがあります。Embarcadero XE2 でコンパイルされますが、何年も前にさかのぼります。このアプリケーションに新しいフォームを追加する必要があります。

「ファイル > 新規追加 > VCL フォーム」を実行すると、クラス名が の場所にフォームが作成されTForm1ます。また、ポインターは次のように作成されます。TForm1 *Form1

明らかな理由から、フォームとポインターの名前を and に変更したいと思いTStuffFormます*StuffForm。問題は、それを機能させることができないことです!

そこにいる実際のXE2ユーザーへ:これを行う標準的な方法は何ですか?

文字列を慎重に置き換えて、コード内で直接名前を変更しようとしましたが、うまくいきません。IDE がおかしくなり、複数のモーダル ポップアップが表示され、TForm1 クラスが見つからないと不平を言います。それはとても不快だったので、私はそれをあきらめました。

IDEのリファクタリング機能も試してみましたが、うまくいきませんでした。だから今、私は少し立ち往生しています。

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

c++builder-xe2 - グローバル変数の初期化とファイナライズ

2 つのスレッド間で共有されるクリティカル セクションがあります。

この変数をグローバルとして宣言しました。Delphi スタイルのクラスは new 演算子を使用して構築する必要があるため、上記の宣言を次のように変更しました。

演算子 new を使用してロック変数を初期化するのに最適な場所はどこですか? operator delete を使用してグローバル変数をファイナライズするのに最適な場所はどこですか? それは WinMain メソッドである必要がありますか? ロック変数にアクセスするクラスの 1 つのコンストラクター? またはコード内の他の場所ですか?

0 投票する
0 に答える
406 参照

delphi - 透明性とランタイム テーマ

プロジェクト全体でランタイム テーマを無効にすると、透明なイメージが黒い背景で描画されます。ランタイム テーマが無効になっているときにボタンに透明な画像を描画することは可能ですか? 私が使用しているボタンは TMS Component Pack のもので、そのクラス名はTAdvToolButton. アプリケーションの外観を完全に制御したいので、テーマを無効にする必要があります。これは重要な要求です。透明度とテーマの関係がわからないので説明してみてください。この二つは別物だと思います。

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

c++builder - borland c++builderのフォーム間でデータを転送する

私はc++ビルダーで2つのフォームを設計しました:

  • TfrmMain
  • TfrmChooseName

TfrmMainクラスには、btnNextという名前のボタンがあります。btnNextをクリックすると、以下のコードが実行され、新しいTfrmChooseNameが作成されます。

また、TfrmMainには、txtInputという名前のTEditコントロールがあります。
TfrmChooseNameのcostructorで、txtInputのテキストを取得し、フォームのキャプションとして設定したいのですが、アクセスボリュームエラーが発生しました。
私も両方のクラスを友達にしました!

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

c++ - AnsiString と C++ ビルダーの UnicodeString から転送された AnsiString との違い

C++ Builder XE3 を使用していますが、AnsiString で奇妙な問題に遭遇しました。

以下のコードを見てください

私の想像では、最初はうまくいきますが、2回目には「Bad Format」例外がスローされます。そして、コード 2 で一度 funcA を呼び出しただけでも、問題は残りました。

temp1またはtemp2内でShowMessageを実行しても違いはありません。2回の呼び出しで異なる結果が得られた理由がまったくわかりません。

funcA は、少し複雑なコードを持つ 3 番目のライブラリからのものです。したがって、このライブラリのコードをたどる前に、Code1 と Code2 の違いを知っておく必要があると思います。

ありがとう。

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

c++ - C++ Builder 例外 - StackTrace が空ですか?

スタック トレースを取得したいのですが、常に空です。

C++ Builder XE2 を使用します。

編集: このコードは TForm1::Button1Click で実行されます。

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

c++ - 複数の TClientSocket インスタンスを使用して Windows ハンドル リークを引き起こす C++ アプリケーション

Borland/EmbarcaderoTClientSocketコンポーネントを使用して、明らかなハンドル リークが発生しました。TThread複数のインスタンスを作成するアプリケーションがあり、それぞれがTClientSocketオブジェクトを動的に作成し、ターゲットに接続していくつかのメッセージを送信してから削除します。その後TThread、インスタンスは ( のFreeOnTerminate = true設定を使用して) 削除されます。これが非効率的であることはわかっていますが、アプリケーションのニーズに完全に適合していますTThread。同時に存在できるインスタンスの最大数は 32 に制限されています。タスクマネージャー経由。問題を切り分けるために、同じ問題をシングル スレッドの意味で適用し、動的にTClientSocketメイン VCL スレッドの 1 つのループ内で終了すると、オブジェクトが再び削除されます。これは、同じハンドル漏れの問題を示します。コンポーネントが非推奨であることはわかっていますし、自分が行っていることが非効率的であることもわかっていますが、ハンドル リークが発生する理由がわかりません。TClientSocketこのハンドル リークをなくすためにオブジェクトを削除する前に、何かする必要があることはありますか?それとも、これはコンポーネントのバグですか? OnConnect OnDisconnect非ブロッキング モードでソケットを使用し、イベント ハンドラをおよびに割り当てていますOnSocketError

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

c++ - C++ ビルダーのスクロール ボックス コンポーネントがマウス ホイールに反応する

マウスホイールをスクロールボックスコンポーネントで動作させるオプションを探していましたが、これまでのところこれを入手しました

これまでのところ機能していますが、スクロールが非常に遅いです。スクロールを速くする方法はありますか、または c++ ビルダーでスクロールを処理するより良い方法はありますか?

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

dialog - リソースからのダイアログの実装

現在、フクロウから vcl にアプリケーションを移植しようとしています。

私の古いプロジェクトファイルでは、次のようなダイアログをロードできました

TBatchAcDialog(TWindow* parent) : TAPDialog(parent, BATCH_DIALOG)

ただし、代わりに TTaskDialog を使用すると、2 番目の引数がサポートされません。

メニューを右クリックすると、rc ファイルから最初に宣言されたメニューをロードできるという、ユーザー インターフェイス デザイナー向けの説明を見つけました。

ただし、これらのダイアログをこの IDE のダイアログとしてロードし、クラスに再度リンクする方法がよくわかりません。

これについて知っている人、または同様の問題に関する記事に私をリンクしてくれる人はいますか? rc-dialogs の実装は私にとって一般的な問題のようですが、適切な解決策を見つけることができなかったようです。