問題タブ [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.

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

windows-8 - Windows 8 標準 VCL スタイル/テーマ

現在、Rad Studio XE5 を使用していますが、標準の Windows 8 スタイル (モダン UI ではない) に基づいて独自のスタイルを作成したいと考えています。Bitmap Style Designer という Rad Studio のビルトイン デザイナを使用しています。ただし、Windows テーマの vsf ファイルが見つからないようです。これをどこで見つけることができるか、または存在するかどうかを誰かが知っていますか? ありがとう。

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

c++builder - 新しいビットマップ形式を TBitmapCodecManager に追加する方法

PPM ファイルを読み書きするためのクラスを作成しました (質問しないでください。この形式を選択したわけではありません)。TBitmapローディング/セーブシステムの一部にしたいです。

このサポートを追加する方法を知っている人はいますか? 本当に完全なコーデックを作成/インストールする必要がありますか?

解決:

Remy Lebeau の投稿により、コーデックを作成して登録することができました。ただし、必要なすべての機能が文書化されていないため、機能させるには試行錯誤が必要でした。

新しいコーデックを登録するには、このような静的メンバーを使用する必要がありRegisterBitmapCodecClassますTBitmapCodecManager

コーデックには、次の関数を定義する必要があります。

このクラスFmx::Surfaces::TBitmapSurfaceにはドキュメントの痕跡はありませんが、IDE は利用可能な機能を提供してくれました。Pixels[x][y]ピクセルの読み取り/書き込みに配列が使用されていると考えました。

クラスが登録された後、通常どおり新しい画像タイプを読み取ることができますTBitmap->LoadFromFile("");

楽しみ!

PS。これを閉じることに投票した人は、理由をコメントしてください。どのような間違いを犯したのか分からない場合、どうすれば改善できますか?

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

c++builder - .res ファイルはソース管理にある必要がありますか?

C++Builder XE5 の場合。

私の理解では、バイナリ ファイルMyProject.res(コンパイラによってファイルと同じディレクトリに作成され.cbprojます) には、コンパイルされたバージョンのプログラム アイコンとプロジェクト バージョンの詳細が含まれています (ただし、私のファイルには XML マニフェストも含まれているようです)。

ただし、この情報は.cbprojファイルと.ico files;にも含まれています。ファイルを削除すると、.res次にプロジェクトを開いたときとまったく同じように再作成されるようです。

*.resでは、ソース管理されていないとマークしても安全でしょうか? (私は使用しますgit)。または、代わりにオブジェクトファイルと同じディレクトリに生成して、ソースと混ざらないようにすることは可能ですか?

(これは確かに C++Builder 5 では安全ではありませんでした。.res ファイルを削除すると、ファイルが見つからないというエラーが表示され、アイコンが失われます)。

更新:これはファイルにも適用され.tlbますか? .ridlこれはファイルに基づいてコンパイルされているようで、削除すると自動的に再生成されます。

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

com - COM オブジェクトのインスタンスを 1 つだけ許可する

COM オブジェクト (インプロセス サーバーによって提供される) のインスタンスを一度に 1 つしか作成できないようにする良い方法はありますか?

現在、TMyObjectImpl のコンストラクターで Windows Mutex を作成しています。ミューテックスが既に存在する場合は、オブジェクトを「デッド」状態にするフラグを設定します。このフラグが設定されると、インターフェイス関数のすべての実装がエラー コードを返します。

このような「デッド」オブジェクトを作成する代わりに例外をスローしたいのですが、COM 境界を越えて C++ 例外をスローするのは良くありません。COM の C++Builder 実装がこれに対処できるかどうかはわかりません。確実に。

実際には、次の 2 つの問題のシナリオが考えられます。

  • 同じプロセスで 2 つの MyObject が作成されます
  • 2 つの異なるプロセスがそれぞれ 1 つの MyObject を作成します

Mutex はこれらの両方を防ぎます。

私のオブジェクトファクトリ関数は次のとおりです。

C++Builder DocWiki によると、Instancing プロパティを設定してもインプロセス サーバーには影響しませciMultiInstanceciSingleInstance

オブジェクトはグローバル リソースにアクセスするため (たとえば、特定のディスクの場所にあるファイルへの書き込み)、このプロパティが必要です。オブジェクトのセマンティクスは、一度に 1 つしか開かれないようになっています。オブジェクトの複数のインスタンスのサポートを追加するつもりはありません。

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

delphi - Delphi XE5でアサーション失敗例外を修正するには?

Delphi XE5 RADスタジオでアサーションエラーを修正するには? 私のプロジェクトでは、火の鳥データベースに接続する sqlconnection があります。接続プロパティを true に設定すると、コンパイラはエラーを表示します。

OKボタンを押すとIDEが急に近づいてきます。XE5 を開発用 IDE として使用しています。なぜこの例外が発生するのか理解できません。誰かが私にこれに対する解決策を教えてもらえますか?

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

constructor - コンストラクターで __closure 関数を渡す

この頭のてっぺんの小さな男女共学のスニペットを参照してください。

今問題に。

Call bar.SetByAssignment()it が正常に動作する場合、関数ポインタが設定され、Foo から正しく呼び出されます。ただし、この場合はパブリック変数として公開されます。プライベートでお願いします。

コンストラクターで関数ポインターを渡すことにより、クラスを単純化し、プライベートに非表示にしたいのですbar.SetByConstructor()が、ここでコンパイラ エラーが発生します。

__closureこれが可能になると思いました。それはまったく可能ですか、それとも私が間違っているだけですか?