問題タブ [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 投票する
1 に答える
9221 参照

vcl - TStringDynArray を TStringList に変換する方法

ファイルのリストを取得するために使用TDirectory::GetFiles()しています(明らかに)。結果は a に格納され、メンバーを使用してリストに文字列が存在するかどうかを確認するためだけTStringDynArrayに、 a に転送したいと考えています。TStringListIndexOf()

TDirectory::GetFiles() から返されたファイルのリストに特定の文字列が存在するかどうかを教えてくれるソリューションであれば、問題ありません。ただし、TStringDynArray を変換する方法を知っておくと興味深いでしょう。

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

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基礎となる関数のナロー バージョンが呼び出されます。___topenCreateFile

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 バージョンを開こうとします)。

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

c++ - C++03 でのブレースの初期化

このプログラムは C++03 で文字列を正しく初期化するはずですか?

bcc32 6.70 を使用すると、出力は256になり、デバッガーで文字列を調べると、その内部ポインターはガベージ アドレスのように見えます。

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

teechart - スクロール矢印をクリックしたときの TeeChart TLegendScrollBar の視覚的な問題

IDE:c++ Builder XE5 Update 2

ティーチャート:TeeChart Pro 2014.11.140512 VCL/FMX release

TLegendScrollBar最近、初めてTeeChartのツールを使いました(便利なツール)。私が遭遇した問題:

スクロール矢印の 1 つをクリックすると、次のことが起こります。

  1. シングル クリック- オーナー チャートのTChart.Colorプロパティが変更されます (背景色)。別のイベントがチャートを更新すると、元の色が復元されます。
  2. Hold Down - オーナー チャートのTChart.Colorプロパティは、元の色と不要な色の間でランダムに切り替わります。

色の変化は、TChart.OnAfterDraw呼び出しの後(シングルクリックOnAfterClickの場合の最初の呼び出しの後)に発生するようです。

例(前後):

前後

複製が簡単:

  1. 新しい VCL フォーム アプリケーションを作成し、TChartコンポーネントをフォームに追加します。
  2. チャートにツールとシリーズ数を追加しTLegendScrollBarます(チャートエディタ)。
  3. TChart.Legend.MaxNumRowsプロパティを より小さい値に設定しますTChart.SeriesCount()
  4. 走る。

質問:

  1. TChart.OnAfterDraw問題の修正を試みることができるエントリポイントはありますか? または回避策?
  2. 1でない場合)スクロール矢印を完全に削除する(非表示にして無効にする)方法はありますか?(ユーザーにマウスホイールまたはスクロールサムを使用して凡例をスクロールさせる)
0 投票する
1 に答える
125 参照

windows - C++Builder - 関数全体をアセンブリに実装する

C++Builder で EIP の値を取得するために、このインライン アセンブリ トリックを実装しようとしています。次のコードはリリース モードで機能します。

ただし、デバッグ モードでは機能しません。デバッグ モードでは、コードを次のように変更する必要があります。

生成されたアセンブリを検査する。違いは、デバッグ モードでは、get_eip()関数用に生成されたコード (最初のバージョン) が次のようになることです。

ただし、リリース モードのコードは次のとおりです。

もちろん#ifdef NDEBUG、問題を回避するために使用できます。ただし、関数全体がアセンブリーにあり、コンパイラーがそれらを挿入してはならないことを指定するために使用できる構文はありますpush ebpか? (または、この問題を解決します)。

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

c++ - ListView 列シェーディングのバグ

選択した列に塗りつぶしを追加したい。

ListView1CustomDrawItemハンドラーで行うアイテムの描画:

そして、私が正しく理解していれば、選択した列をListView1CustomDrawハンドラーで描画する必要があります:

結果は次のとおりです。

http://i63.fastpic.ru/big/2014/1120/ba/e5b6d30eb9e05bbe3661aed295c28aba.jpg

ビデオでも見ることができます: http://youtu.be/XGXpWCUtGbU

ご覧のとおり、項目の上にカーソルを移動すると (クリックしないでください)、項目が正しく再描画されません。ただし、アイテムは列の色付きの長方形の上に描画する必要があります。どうすればこれを修正できますか?

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

c++builder - C++ ビルダー アプリケーションでトランザクション レベルをダーティ リードに変更する方法

私はこれらの手順に従おうとしています。ちょっと時代遅れですが、これが私が必要としているもののようです。

http://www.drbob42.com/examines/examin95.htm

DBX4 セクションでは、ユーザーは Delphi で次のことを行いました。

私はC ++で同じことをしようとしています

ただし、メッセージ「割り当てられていないコード」例外で TDBXError が発生しています。何かが足りないようですが、オンラインで解決策を見つけることができませんでした。

C++ Builder XE 5 を使用しています。Interbase データベースへの DBX 接続を介してこれを実行しようとしています。

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

icons - TIcon は、アイコン ファイルから 1 つの画像のみを読み込みます

24x24、32x32、48x48、64x64、および 256x256 のアイコンを含むアイコン ファイルがあります。ただし、次のようにロードすると:

私のアイコンにはアイコンの複数の解像度が含まれているという事実にもかかわらず、ファイルから1つの画像のみをロードしているように見えます。その結果、どのフォームでも、タスクバー アイコンとコーナー アイコンの両方に再スケーリングされた単一のアイコンが使用され、見栄えが悪くなります。

ただし、filename.icoコンパイル済みリソースに設定した場合、または [プロジェクト プロパティ] > [アプリケーション] > [アイコン] でアイコンを設定した場合、フォームはコーナー アイコンに 24x24 アイコンを使用し、タスクバーに 48x48 アイコンを使用します。

私の質問は、filename.ico実行時までファイル名が不明なアイコンをフォームに使用させるにはどうすればよいですか。コーナーには 24x24 のアイコンを使用し、タスクバーには 48x48 のアイコンを使用しますか?

注意。他のバージョンの Windows (または Windows のフォント スケーリング オプションを使用している場合) では、別のサイズのアイコンが必要になる可能性があるため、24x24 および 48x48 のサイズをハードコーディングしないことを好みます。

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

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 の復帰を待機していることがわかります。