問題タブ [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.
vcl - TStringDynArray を TStringList に変換する方法
ファイルのリストを取得するために使用TDirectory::GetFiles()
しています(明らかに)。結果は a に格納され、メンバーを使用してリストに文字列が存在するかどうかを確認するためだけTStringDynArray
に、 a に転送したいと考えています。TStringList
IndexOf()
TDirectory::GetFiles() から返されたファイルのリストに特定の文字列が存在するかどうかを教えてくれるソリューションであれば、問題ありません。ただし、TStringDynArray を変換する方法を知っておくと興味深いでしょう。
c++ - ファイル名にワイド文字が含まれている場合の ifstream の使用
Windows 7 で C++Builder XE5 (bcc32) を使用する。
ファイル名にワイド文字が含まれているファイルを開こうとしています。私がテストしている実際のファイル名はC:\bΛx\foo.txt
. そこにある非ASCII文字は U+039B です。
このファイル名は . に正しく保存されていstd::wstring
ます。ただし、次のことを試みます。
ファイルを開くことができません。
もちろん、標準 C++fopen
ではchar *
. ただし、Dinkumware C++ RTL 実装には、 を受け入れるオーバーロードがありwchar_t *
ます。残念ながら、そのオーバーロードの実装は を...\Embarcadero\RAD Studio\12.0\source\cpprtl\Source\dinkumware\source\fiopen.cpp
呼び出しません_wfopen
。代わりに、 を使用wcstombs
して文字列を UTF-8 に変換してから を呼び出しますfopen
。
のソースをチェックすると、最終的に UTF-8 文字列を に渡すfopen
基礎となる関数のナロー バージョンが呼び出されます。___topen
CreateFile
Sysinternals Process Monitor を使用してファイルを開こうとする試みを調べると、UTF-8 ファイル文字列でファイルを開こうとしたことが示され、オペレーティング システムはこれを拒否し、結果はNAME COLLISION
.
を使用してファイルを開くと、_wfopen( filename.c_str(), L"r" )
すべて問題なく、CI/O 関数を使用してファイルを読み取ることができますが、もちろん C++ iostream は使用できません。
std::ifstream
ファイル名に U+039B などの文字が含まれるファイルを開く方法はありますか?
std::wifstream
usingも機能しないことに注意してください(ファイル名の UTF-8 バージョンを開こうとします)。
c++ - C++03 でのブレースの初期化
このプログラムは C++03 で文字列を正しく初期化するはずですか?
bcc32 6.70 を使用すると、出力は256
になり、デバッガーで文字列を調べると、その内部ポインターはガベージ アドレスのように見えます。
teechart - スクロール矢印をクリックしたときの TeeChart TLegendScrollBar の視覚的な問題
IDE:c++ Builder XE5 Update 2
ティーチャート:TeeChart Pro 2014.11.140512 VCL/FMX release
TLegendScrollBar
最近、初めてTeeChartのツールを使いました(便利なツール)。私が遭遇した問題:
スクロール矢印の 1 つをクリックすると、次のことが起こります。
- シングル クリック- オーナー チャートの
TChart.Color
プロパティが変更されます (背景色)。別のイベントがチャートを更新すると、元の色が復元されます。 - Hold Down - オーナー チャートの
TChart.Color
プロパティは、元の色と不要な色の間でランダムに切り替わります。
色の変化は、TChart.OnAfterDraw
呼び出しの後(シングルクリックOnAfterClick
の場合の最初の呼び出しの後)に発生するようです。
例(前後):
複製が簡単:
- 新しい VCL フォーム アプリケーションを作成し、
TChart
コンポーネントをフォームに追加します。 - チャートにツールとシリーズ数を追加し
TLegendScrollBar
ます(チャートエディタ)。 TChart.Legend.MaxNumRows
プロパティを より小さい値に設定しますTChart.SeriesCount()
。- 走る。
質問:
TChart.OnAfterDraw
問題の修正を試みることができるエントリポイントはありますか? または回避策?- (1でない場合)スクロール矢印を完全に削除する(非表示にして無効にする)方法はありますか?(ユーザーにマウスホイールまたはスクロールサムを使用して凡例をスクロールさせる)
windows - C++Builder - 関数全体をアセンブリに実装する
C++Builder で EIP の値を取得するために、このインライン アセンブリ トリックを実装しようとしています。次のコードはリリース モードで機能します。
ただし、デバッグ モードでは機能しません。デバッグ モードでは、コードを次のように変更する必要があります。
生成されたアセンブリを検査する。違いは、デバッグ モードでは、get_eip()
関数用に生成されたコード (最初のバージョン) が次のようになることです。
ただし、リリース モードのコードは次のとおりです。
もちろん#ifdef NDEBUG
、問題を回避するために使用できます。ただし、関数全体がアセンブリーにあり、コンパイラーがそれらを挿入してはならないことを指定するために使用できる構文はありますpush ebp
か? (または、この問題を解決します)。
c++ - ListView 列シェーディングのバグ
選択した列に塗りつぶしを追加したい。
ListView1CustomDrawItem
ハンドラーで行うアイテムの描画:
そして、私が正しく理解していれば、選択した列をListView1CustomDraw
ハンドラーで描画する必要があります:
結果は次のとおりです。
http://i63.fastpic.ru/big/2014/1120/ba/e5b6d30eb9e05bbe3661aed295c28aba.jpg
ビデオでも見ることができます: http://youtu.be/XGXpWCUtGbU
ご覧のとおり、項目の上にカーソルを移動すると (クリックしないでください)、項目が正しく再描画されません。ただし、アイテムは列の色付きの長方形の上に描画する必要があります。どうすればこれを修正できますか?
c++builder - C++ ビルダー アプリケーションでトランザクション レベルをダーティ リードに変更する方法
私はこれらの手順に従おうとしています。ちょっと時代遅れですが、これが私が必要としているもののようです。
http://www.drbob42.com/examines/examin95.htm
DBX4 セクションでは、ユーザーは Delphi で次のことを行いました。
私はC ++で同じことをしようとしています
ただし、メッセージ「割り当てられていないコード」例外で TDBXError が発生しています。何かが足りないようですが、オンラインで解決策を見つけることができませんでした。
C++ Builder XE 5 を使用しています。Interbase データベースへの DBX 接続を介してこれを実行しようとしています。
icons - TIcon は、アイコン ファイルから 1 つの画像のみを読み込みます
24x24、32x32、48x48、64x64、および 256x256 のアイコンを含むアイコン ファイルがあります。ただし、次のようにロードすると:
私のアイコンにはアイコンの複数の解像度が含まれているという事実にもかかわらず、ファイルから1つの画像のみをロードしているように見えます。その結果、どのフォームでも、タスクバー アイコンとコーナー アイコンの両方に再スケーリングされた単一のアイコンが使用され、見栄えが悪くなります。
ただし、filename.ico
コンパイル済みリソースに設定した場合、または [プロジェクト プロパティ] > [アプリケーション] > [アイコン] でアイコンを設定した場合、フォームはコーナー アイコンに 24x24 アイコンを使用し、タスクバーに 48x48 アイコンを使用します。
私の質問は、filename.ico
実行時までファイル名が不明なアイコンをフォームに使用させるにはどうすればよいですか。コーナーには 24x24 のアイコンを使用し、タスクバーには 48x48 のアイコンを使用しますか?
注意。他のバージョンの Windows (または Windows のフォント スケーリング オプションを使用している場合) では、別のサイズのアイコンが必要になる可能性があるため、24x24 および 48x48 のサイズをハードコーディングしないことを好みます。
winapi - svchost.exe の待機中に CreateProcess() と ShellExecute() がフリーズする
Windows 8 で外部プログラムを起動していますが、svchost.exe が戻るのを待っているバックグラウンド プロセスとして停止します。同じアプリケーションを手動で (ダブルクリックして) 起動すると、正常に起動します。Windows 7 で同じコードを実行すると、問題なく動作します。
私は主に、アプリケーションを実行する 3 つの方法を試しました。
これは ok を返しますが、アプリケーションは svchost.exe を待ってフリーズします。次に拡張版を試してみました。
これもOKを返し、hInstAppが設定されていますが、以前と同じようにフリーズします。次に、CreateProcess() を試しました。
これもOKを返し、PROCESS_INFORMATIONは正しく入力されますが、それでもフリーズします。プロセスを作成すると、RAD Studio に次のようなデバッグ メッセージが表示されます。
Windows 8 タスク マネージャーでは、プロセスが svchost.exe の復帰を待機していることがわかります。