問題タブ [c++builder-xe8]
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.
c++ - Firemonkey TListView でアイテムを削除すると範囲外の例外が発生する
TListView
各アイテムに対応する「削除」ボタンがあるいくつかのアイテムがあります。にTListView
は、次のオン ボタン クリック イベント ハンドラがあります。
項目を削除しようとすると、「引数が範囲外です」という例外がスローされます。ただし、Delete
通話中ではなく、System.Generics.Collections
ここにあります。
リスト ビューからアイテムを不適切に削除していませんか? または、この問題を引き起こしている他の何かがありますか?
c++ - C++ Builder XE8 での TEdit 入力検証
私は C++ Builder XE8 を初めて使用します。
入力する必要がある数字の最小長と最大長を 6 桁までにしたいのですが、アルファベット文字、バックスペース、句読点などではなく、数字のみを入力する必要があります (0 は例外です)。
また、数字以外が入力された場合にエラーボックスを生成したいと考えています。
コードの組み合わせをいくつか試してみましたが、そのうちの 3 つを以下に示しますが、どれも機能しません。
どんな助けでも大歓迎です!
(1)。
(2)。
(3)。
c++ - firemonkey でのキャンバス レンダリングのビデオ カード パフォーマンスの評価
最近、私のチームは、現在の C++ ビルダー プロジェクトが別のコンピューターで奇妙に実行されているという問題に気付き始めました。GlobalUseGPUCanvas
これを に設定してアプリケーションを実行しているという事実に絞り込みましたtrue
。私の理解では、これは firemonkey が GPU を使用してキャンバスをレンダリングすることを意味します。問題が発生しているマシンは、統合グラフィックス カードの性能が低いマシンであることに気付きました。GlobalUseGPUCanvas
したがって、ユーザーが十分に強力なグラフィックス カードを持っている場合に のみ有効になるロジックを書きたいと考えています。
これを開始するために、この MSDN の記事に大きく基づいて次のコードを作成しました。これにより、マシン上のすべてのビデオ カードをループして、それらのメモリ容量を確認できます。
コンピュータのビデオカードをチェックして、ビデオカードでプログラムを実行するのに十分なメモリがあるかどうかを確認できるため、これはまともなスタートです。ただし、マシンに非常に優れた専用グラフィックス カードが搭載されていても、代わりに内部グラフィックスが有効になっている可能性があるというシナリオを処理する方法がわかりません。たとえば、強力な専用カードが表示され、十分なメモリがあると考えることができますが、何らかの理由であまり強力でない統合グラフィックスが不足している場合は、間違っている可能性があります。
私が列挙しているこれらのグラフィックカードのどれがアクティブなグラフィックデバイスであるかを知ることができる方法はありますか?
c++ - Embarcadero C++ Builder での静的ライブラリと動的ライブラリの使用
iOS スタティック ライブラリ (.a & .h ファイル) があり、それを C++ Builder プロジェクトに実装する方法を知りたいです。このドキュメントでは、Java ライブラリをインポートする方法について詳しく説明していますが、サードパーティの iOS ライブラリについてはまったく触れていません。また、Embarcadero からのブログ投稿やビデオもありません。
私が見つけた最も近い投稿は次のとおりです。
Delphi XE5 を使用したモバイル デバイスでのインターネット接続の確認
ただし、.a ファイルでリンクする方法と、ObjC .h ファイルでインターフェイスにアクセスする方法が明確ではありません。
完成したバージョンを Embarcadero Community と共有し、最終的にこれを行う方法を文書化してくれることを願っています。
c++ - getenv() を使用して環境変数を読み取ると NULL C++ が返される
このドキュメントに従って、C++ で環境変数を読み取ろうとしています。私のコードは次のようになります。
私の問題は、環境変数が存在しないかのように、常に val が NULL になることです。ただし、ここでわかるように、変数が明確に定義されています。
ここで何が間違っていますか?
c++ - Firemonkey: TLabel Text を設定すると String Index out of Range Exception が発生する
TLabel
ヘルプ メッセージを作成し、そのテキスト プロパティをそのヘルプ メッセージに設定するメソッドがあります。ただし、ラベルのテキストを設定しようとすると、次の例外が発生します。
'String index out of range. (-1) Must be >=0 and <=42'
方法は次のとおりです。
ShowMessage
文字列の値を確認するためだけに呼び出しを追加しました。ちゃんと映ります。次のような任意の値にラベルを設定することもできます。
HelpLabel->Text = "This message works!";
HelpMsg
文字列 を作成するときに何か間違ったことをしていますか?
編集:文字列に \n を追加する行をコメントアウトすると、問題が解決します。同様に、次のコードは例外を引き起こします。
\n が問題を引き起こす原因は何ですか? 新しい行を正しく追加するにはどうすればよいですか?
clang - 「初期化に一致するコンストラクターがありません」Rad Studio 10 Clang Compiler
従来の BCC コンパイラを使用して C++ Builder XE8 でコンパイルされるコードのスニペットがあります。ただし、Clang コンパイラを使用する Rad Studio 10 シアトルでは、エラーが発生します。
'no matching constructor found for initialization of TChoiceItem'
エラーの原因となるコードのスニペットを次に示します。
ここに定義するコードがありますTChoiceItem
私はC++にかなり慣れていないので、クラス/メソッドを定義する上記のメソッドを何と呼ぶべきか正確にはわかりません。
これは、Clang コンパイラでサポートされていない、ある種の時代遅れの言語機能ですか? コンパイラが受け入れるようにコードまたは定義を変更する方法はありますか?
編集:
TChoiceItem
クラス の実際の宣言を見つけました。
標準コンストラクターはまったくないようです。しかし、どういうわけか、すべてが依然としてコンパイルされ、従来の BCC コンパイラで動作します。
編集2:
同様の問題を説明しているように見えるこの質問を見つけました。コードをコンパイルするときに、ある種のコンパイラ フラグを含める必要があるのでしょうか? もしそうなら、embarcadero プロジェクトのコンパイラ設定にフラグを追加できますか?
c++builder - C++ Builder XE8 アプリ間の高速通信
まず、C++ Builder でのこの種の開発は初めてなので、C++ Builder XE8 でタスクを達成するための最良の方法を探しています。基本的に、更新を sqlite データベースにプッシュする 1 つの firemonkey GUI アプリケーション (より良い代替手段がある場合はアドバイスしてください) と、それとカスタムメイドのハードウェアとの間のインターフェイスとなる別の firemonkey アプリケーション (基本的にはバックグラウンド サービス) を用意します。 . それで、私の質問は、データベースが更新されたことを伝えるための最も速く、最も「ライブアクション」な方法は何ですか. イベントハンドラ? 100 ミリ秒ごとにライブバインディングを更新するだけのタイマーは、コストがかかるように思われるため、使用したくありません。これは、Android、iOS、および Windows デバイスで実行されることに注意してください。それらのいくつかは力不足かもしれません。
私のアイデアは、元のアプリケーションが必要に応じて更新を sqlite データベースにプッシュするというものです。これはディスク上の単なるファイルです。インターフェースとなる firemonkey アプリケーションは、イベント リスナーによって、または私が読んだマルチプラットフォームの RTL メッセージから、これらの更新がいつ発生したかを知る必要があります。アイデアは、最小量のメモリ フットプリントで最速の通信を行うことです。ハードウェアをどのように扱っているかはまだわかりませんが、今のところ、ポイント A からポイント B に移動する必要があり、ポイント C (ハードウェア) については後で心配します。そのため、元の GUI アプリケーションからのデータベースの更新をインターフェイス アプリケーションでリッスンするようにするためのアドバイスは素晴らしいものです。また、ファイルが更新されているかどうかを確認できるファイルリスナーであることも読みましたか?
c++ - Midas.dll C++ なしでプロジェクトをデプロイする
DLL をコピーしなくても、Midas.dll を使用する firemonkey プロジェクトを別のマシンに展開できるようにしようとしています。 この記事では、次のように uses 句に MidasLib を含めることで、Delphi プロジェクトでこれを行う方法について説明します。
私は Delphi にはあまり詳しくありませんが、C++ ではステートメントの代わりに#include
ステートメントを使用したいと思いuses
ます。MidasLib は .pas ファイルなので、Midas.hpp
. ただし、それMidas.hpp
を使用しているファイルに含めても、「Midas.dll が見つかりません」という例外が発生します。
Midas.dll ファイルを一緒にコピーせずにプロジェクトをデプロイするにはどうすればよいですか?
c++ - Firemonkey: コントロールの親フォームを取得する
メインフォームの高さにアクセスする必要があるカスタムコントロールがあります。このコントロールは一連のパネルに入れ子になっているのが一般的であるため、メイン フォームに移動するために次のコードを記述しました。
ステートメントを使用しShowMessage
て進行状況を追跡します。コードをステップ実行すると、「BasePanel」まで到達します。この場合、「MainForm」の前のはしごを上った最後のコントロールです。ただし、ShowMessage
「MainForm」の呼び出しが発生すると、アクセス違反が発生します。
この方法でコントロールのメイン フォームにアクセスできない理由はありますか? コントロールのメイン フォームにアクセスするより良い方法はありますか?