問題タブ [c++builder-xe5]
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.
windows-8 - Windows 8 標準 VCL スタイル/テーマ
現在、Rad Studio XE5 を使用していますが、標準の Windows 8 スタイル (モダン UI ではない) に基づいて独自のスタイルを作成したいと考えています。Bitmap Style Designer という Rad Studio のビルトイン デザイナを使用しています。ただし、Windows テーマの vsf ファイルが見つからないようです。これをどこで見つけることができるか、または存在するかどうかを誰かが知っていますか? ありがとう。
c++builder - 新しいビットマップ形式を TBitmapCodecManager に追加する方法
PPM ファイルを読み書きするためのクラスを作成しました (質問しないでください。この形式を選択したわけではありません)。TBitmap
ローディング/セーブシステムの一部にしたいです。
このサポートを追加する方法を知っている人はいますか? 本当に完全なコーデックを作成/インストールする必要がありますか?
解決:
Remy Lebeau の投稿により、コーデックを作成して登録することができました。ただし、必要なすべての機能が文書化されていないため、機能させるには試行錯誤が必要でした。
新しいコーデックを登録するには、このような静的メンバーを使用する必要がありRegisterBitmapCodecClass
ますTBitmapCodecManager
。
コーデックには、次の関数を定義する必要があります。
このクラスFmx::Surfaces::TBitmapSurface
にはドキュメントの痕跡はありませんが、IDE は利用可能な機能を提供してくれました。Pixels[x][y]
ピクセルの読み取り/書き込みに配列が使用されていると考えました。
クラスが登録された後、通常どおり新しい画像タイプを読み取ることができますTBitmap->LoadFromFile("");
楽しみ!
PS。これを閉じることに投票した人は、理由をコメントしてください。どのような間違いを犯したのか分からない場合、どうすれば改善できますか?
c++builder - .res ファイルはソース管理にある必要がありますか?
C++Builder XE5 の場合。
私の理解では、バイナリ ファイルMyProject.res
(コンパイラによってファイルと同じディレクトリに作成され.cbproj
ます) には、コンパイルされたバージョンのプログラム アイコンとプロジェクト バージョンの詳細が含まれています (ただし、私のファイルには XML マニフェストも含まれているようです)。
ただし、この情報は.cbproj
ファイルと.ico files
;にも含まれています。ファイルを削除すると、.res
次にプロジェクトを開いたときとまったく同じように再作成されるようです。
*.res
では、ソース管理されていないとマークしても安全でしょうか? (私は使用しますgit
)。または、代わりにオブジェクトファイルと同じディレクトリに生成して、ソースと混ざらないようにすることは可能ですか?
(これは確かに C++Builder 5 では安全ではありませんでした。.res ファイルを削除すると、ファイルが見つからないというエラーが表示され、アイコンが失われます)。
更新:これはファイルにも適用され.tlb
ますか? .ridl
これはファイルに基づいてコンパイルされているようで、削除すると自動的に再生成されます。
com - COM オブジェクトのインスタンスを 1 つだけ許可する
COM オブジェクト (インプロセス サーバーによって提供される) のインスタンスを一度に 1 つしか作成できないようにする良い方法はありますか?
現在、TMyObjectImpl のコンストラクターで Windows Mutex を作成しています。ミューテックスが既に存在する場合は、オブジェクトを「デッド」状態にするフラグを設定します。このフラグが設定されると、インターフェイス関数のすべての実装がエラー コードを返します。
このような「デッド」オブジェクトを作成する代わりに例外をスローしたいのですが、COM 境界を越えて C++ 例外をスローするのは良くありません。COM の C++Builder 実装がこれに対処できるかどうかはわかりません。確実に。
実際には、次の 2 つの問題のシナリオが考えられます。
- 同じプロセスで 2 つの MyObject が作成されます
- 2 つの異なるプロセスがそれぞれ 1 つの MyObject を作成します
Mutex はこれらの両方を防ぎます。
私のオブジェクトファクトリ関数は次のとおりです。
C++Builder DocWiki によると、Instancing プロパティを設定してもインプロセス サーバーには影響しませciMultiInstance
んciSingleInstance
。
オブジェクトはグローバル リソースにアクセスするため (たとえば、特定のディスクの場所にあるファイルへの書き込み)、このプロパティが必要です。オブジェクトのセマンティクスは、一度に 1 つしか開かれないようになっています。オブジェクトの複数のインスタンスのサポートを追加するつもりはありません。
delphi - Delphi XE5でアサーション失敗例外を修正するには?
Delphi XE5 RADスタジオでアサーションエラーを修正するには? 私のプロジェクトでは、火の鳥データベースに接続する sqlconnection があります。接続プロパティを true に設定すると、コンパイラはエラーを表示します。
OKボタンを押すとIDEが急に近づいてきます。XE5 を開発用 IDE として使用しています。なぜこの例外が発生するのか理解できません。誰かが私にこれに対する解決策を教えてもらえますか?
constructor - コンストラクターで __closure 関数を渡す
この頭のてっぺんの小さな男女共学のスニペットを参照してください。
今問題に。
Call bar.SetByAssignment()
it が正常に動作する場合、関数ポインタが設定され、Foo から正しく呼び出されます。ただし、この場合はパブリック変数として公開されます。プライベートでお願いします。
コンストラクターで関数ポインターを渡すことにより、クラスを単純化し、プライベートに非表示にしたいのですbar.SetByConstructor()
が、ここでコンパイラ エラーが発生します。
__closure
これが可能になると思いました。それはまったく可能ですか、それとも私が間違っているだけですか?