問題タブ [c++builder-10.1-berlin]

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 に答える
458 参照

android - TObject の子孫で std::vector::push_back を呼び出すときの C++ Builder bccarm エラー

C++ Builder 10.1 Berlin の Clang ベースの C++11 コンパイラ bccaarm ではコンパイルできない単純な C++ コードがいくつかあります。

これはコードです:

そして、これはエラーです:

[bccaarm エラー] stl_iterator.h(963): 型 'value_type' (別名 'System: classes::TComponent * __strong') への右辺値参照は、型 '__borland_class * isTObj __strong' (別名 'System: :Classes::TComponent * __strong')

コンパイラは、ファイル stl_iterator.h の 963 行目で停止します。

IDE のスクリーンショット

他の C++ コンパイラ bcc32 および bcc32c (これも Clang ベース) では、このコードに問題はありません。

CompタイプTComponentまたはコードからの別の子孫からではない場合TObject、問題なくコンパイルされます。

このコードの何が問題なのか、なぜ R 値と L 値に問題があるのか​​ わかりません...

ここで何をすべきか知っている人はいますか?

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

c++ - TStyledPresentationProxy の子孫がクラスに登録されていません

から継承するカスタム グリッド コントロールがありTGridますTFmGrid。このコントロールは、Rad Studio 10 Seattle Update One で正常に機能していました。TFmGrid最近 10.1 Berlin にアップグレードしたところ、アプリケーションの実行時とデザイナーの両方で次のエラー メッセージがコントロールに表示されることに気付き始めました。

TStyledPresentationProxy の子孫がクラス TFmGrid に登録されていません。FMX.Grid.Style モジュールを uses セクションに追加する必要があるかもしれません。

以下の画像は、グリッド コントロールにエラー メッセージがどのように表示されるかを示しています。

ここに画像の説明を入力

メッセージが示すように、コントロール #include <FMX.Grid.Style.hpp>のヘッダー ファイルに追加することから始めましたが、これは何もしていないようです。TFmGrid

したがって、 の子孫を登録しようとする限り、TStyledPresentationProxyどこから始めればよいか正確にはわかりません。メソッドに関するこのドキュメントを見つけました:

指定された名前、または指定されたコントロール クラスとコントロール タイプの組み合わせで、プレゼンテーション プロキシ クラスの登録を試みます。

したがって、このメソッドまたは少なくとも同様のものを使用する必要があると思いますが、このメソッドを呼び出す方法がわかりません。

しかし、それでは、このコードをどこで呼び出すべきかという問題が生じます。

カスタム コントロールの名前空間Register()には、コントロールの作成時に IDE によって自動生成されたと思われるメソッドがあります。

の子孫を登録するには、そこに何かを呼び出す必要がありTStyledPresentationProxyますか? これについての適切な方法は何ですか?

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

c++builder - スタイル付き VCL コンポーネントの作成

C++ Builder 10.1 Berlin でカスタム VCL コンポーネントを作成しようとしています。TGraphicControlこれは、TProgressBar.

Windows テーマシステムを使用して自分自身を描画したい。これを行うために、ソース コードにインクルードし、メソッドを呼び出すVcl.Themes.hpp仮想メソッドを上書きしました。Paint()TCustomStyleServices::DrawElement

問題は、解決できない64 ビットリンカの不平です。Vcl::Themes::TCustomStyleServices::DrawElement

リンカーを満足させるにはどうすればよいですか?

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

c++ - boost::locale と Embarcadero Berlin 10.1 のリンク

Embarcadero Berlin 10.1 で簡単なコンソール アプリケーションを作成し、32 ビットの clang コンパイラを選択して、boost docs の hereからいくつかのコードをコピーしました。

ここに完全なコードがあります

しかし、いくつかのリンカー エラーが発生します。

libboost_locale-bcb32c-MT-SD-1_55.lib をプロジェクトに手動で追加することで修正できる最初の 2 つです。Boost に関する私の理解と経験から、実際には手動でリンクする必要はありませんが、気にしません。ただし、最後の4つはまったくわかりません。ロケール バックエンドに関連しているようです (Embarcadero が提供するブーストを備えた ICU ではありませんか?)

誰かアドバイスはありますか?