問題タブ [c++builder-6]
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 - GetTextMetricsは、CourierNewの異なる最大文字幅と平均文字幅を返します
Windows7で実行されているBorlandC++Builder6を使用してアプリケーションを保守しています。
各文字がわずかに切り取られているため、アプリケーションはフォントCourierNewを使用して誤ってテキストを描画しています。問題は、メソッドGetTextMetricsを呼び出すときに発生します。これは、TEXTMETICS構造体に異なるtmAveCharWidth値とtmMaxCharWidth値が入力されているためです。次に、アプリケーションはtmAveCharWidthを使用して文字幅を計算しますが、その値はtmMaxCharWidth未満である可能性があるため、間違っています。その問題は私が修正します。
GetTextMetricsがCourierNewに対して異なるtmAveCharWidth値とtmMaxCharWidth値を返すのはなぜですか?私の理解では、Courier Newは等幅フォントであり、tmAveCharWidthとtmMaxCharWidthは同じである必要があります。私は他の等幅フォントでその仮定が正しいことをテストしました。
これは、問題のあるコードのセクションです。
サイズ12のCourierNewを選択したときに実行されるコードは次のとおりです。
sql-server-2008 - タイムアウトを発生させる方法
タイムアウトの問題を調査しており、初期テストの一部として再現したいと考えています。
Devart、Borland C ++ Builder 6、SQL Serverは初めてですが、必要な構文がわかりません。タイムアウトする無期限の遅延を生成するために、クエリまたは一連のクエリを実行するコードの例を探しています。
c++ - SQLite。C++Builder 6 CodeGuard の sqlite3.c での多数の「アクセス オーバーラン」「算術オーバーラン」「リソース リーク」
Borland C++Builder 6.0 プロジェクトがあります。このプロジェクトでは、SQLite ライブラリを使用します。sqlite3.c ファイル (SQLite amalgamation 3.7.11) を使用します。すべて正常に動作します。しかし、C++Builder で CodeGuard を有効にすると、CodeGuard によって sqlite3.c に多数のエラーが表示されます。「アクセスオーバーラン」「演算オーバーラン」「リソースリーク」みたいな。
プロジェクトのデータベースに 100000 レコードを挿入しようとしました。これには約 130 秒かかり、プロセスによって使用されるメモリはまったく増加しませんでした。したがって、実際にはメモリリークはないと思います。
私の質問は次のとおりです: sqlite の CodeGuard エラーを真剣に受け止めるべきですか? それとも無視してもいいですか?多分それらは偽陽性ですか?または、C++Builder 6 コンパイラは SQlite に適していませんか?
winapi - Windows 2000/XP でのクリティカル セクションに関する不正な動作
最近、古いアプリ (Borland C++ Builder 6 で作成) を Windows 7 x64 で実行しようとしたところ、IO スレッドが機能していないことがわかりました。デバッグは、問題がエラー処理クラスにあり、クリティカル セクションを離れていないことを示した (単純なラッパー クラスを介して間接的に) ため、ログに追加されたすべてのメッセージが の 2 回の呼び出しを引き起こしましたが、 のEnterCriticalSection
呼び出しは 1 回だけでしLeaveCriticalSection
た。
このエラーによってクラスが使用できなくなるように思われますが、これは元の開発者が積極的に使用している一般的なクラスの 1 つであり、この特定のアプリケーションは Windows 2000/XP で常に正常に動作していました。問題は、なぜこのエラーが Windows 7 でのみ発生したのかということです。
ここでクリティカル セクションに関する MSDN の記事と提案された質問を読みましたが、唯一の動作の変更点は未定義の取得順序であり、これは間違いありません。
string - Borland C++ Builder 6 と文字列連結
Borland C++ Builder 6 を使用して、簡単な文字列連結を試みています。しかし、私は興味深い問題だと思うことに遭遇しました。
オンラインで見つけることができるものはすべて、次のような簡単なことを実行できるはずだと述べています。
ただし、このコードをコンパイルしようとすると、「無効なポインターの追加」エラーが発生します。各パーツを独自の変数に割り当て、それらをそれぞれ追加して、目的の出力を得ることができました。ただし、これがいかに単純な例であるかを考えると、それは不要だと思います。
上記に似たものを希望どおりに機能させることができた唯一の方法は、これを行うことです。
私の質問は次のとおりです。なぜ 2 番目の例は問題なく動作するのに、最初の例ではうまくいかないのでしょうか?
sql-server-2008-r2 - AnsiString が十分なスペースで切り詰められている
JOBCODE
として定義されたフィールドを持つ行を挿入していvarchar(50)
ます。そのフィールドの文字列が 20 文字を超えると、文字列が切り捨てられるという SQL Server の警告からエラーが発生します。
これは Unicode ワイド文字に関係しているのではないかと思いますが、25 文字はパスすると思いました。
誰かが前にこのようなものを見たことがありますか? 私は何が欠けていますか?
drag-and-drop - ドラッグアンドドロップとして解釈されるTPopupMenuを右クリックします
期待どおりに機能するポップアップメニューがあります。同じオブジェクトのドラッグアンドドロップ機能は期待どおりに機能します。それらをまとめて...
右クリックするとポップアップメニューが表示されます。メニューが表示されている間、ポップアップメニューを左クリックしてもオブジェクトを左クリックすると、ドラッグアンドドロップ機能が呼び出されます。これは、最初の右クリックが、これまで保持されてから離された左クリックであるかのように行われます。 。
私は何を間違えましたか?どうすればこれを修正できますか?
c++ - Builder 2010 の「アクセスできません」エラー
プロジェクトを C++ Builder 6 から C++ Builder 2010 に移行しようとしています。プロジェクトには TChart があります。BCB 2010 でコンパイルすると、次のようなエラーが多数発生しE2247 '_fastcall TSeriesPointer::ChangeStyle(TSeriesPointerStyle)' is not accessible
ます。それは何でしょうか?
失敗したコードを含む文字列があります:
Series8 -- TSeries タイプのオブジェクトです。InpStr -- UnicodeString オブジェクトです。
c++ - 仮想メモリ アドレス空間が不足しています (Borland C++ Builder 6 プログラム)
C++ Builder 6 で作成されたアプリケーションに問題があります。しばらく (週、月) 実行した後、アプリケーションがクラッシュし、エラー メッセージが表示されずに閉じます。クラッシュの直前にアプリケーション ログに、多くの「メモリ不足」の例外が記録されます。メモリ不足の例外をスローしているプロセスを調べたところ (下のスクリーンショット)、コミットされていないプライベート メモリ スペースがたくさんあります。そのような行動の理由は何ですか?
私は数年前に一度、そのような問題を抱えていました。その理由は、リンカーオプションでチェックされていない「動的ライブラリを使用する」オプションでした。もう一度確認すると、問題は解消され、その逆も同様でした。私が作成したテストアプリケーションは、「new char[1000000]」を呼び出してから削除するだけでした。メモリは毎回解放されましたが (Windows タスク マネージャーでコミットされたメモリの増加はありませんでした)、しばらくしてメモリ不足になった後、VMMap はまったく同じことを示しました。多くのプライベート メモリが予約されていますが、そのほとんどはコミットされていません。
問題は再発しましたが、同じ方法で修正することはできません。それが理由かどうかはわかりませんが、同じマシンに Builder 6 と 2010 をインストールしました。今は Builder 6 しか持っていませんが、以前のようにテスト アプリケーションでエラーを再現できないようです。どうやら、メモリマネージャのエラーか何かがあるようです。CodeGuard はメモリ リークを示しません。「新規」でメモリブロックを作成すると「メモリコミットサイズ」に即座に表示され、削除するとメモリ使用量が減少するため、メモリリークはそうではないと仮定すると、タスクマネージャーは「メモリコミットサイズ」をあまり表示しません.
何か私にできることはありますか?コミットされていないメモリを解放する方法はありますか? 問題をさらに診断する方法は?
スクリーンショット: http://i.stack.imgur.com/UKuTZ.jpg
soap - Borland C++ Builder 6 の SOAP Web サービス クライアント
以下は、Borland C++ Builder 6 で開発されたアプリケーションで Web サービス クライアントを開発する段階的な試みです。 C++ ビルダー XE3)。これは、Borland 6 C++ Builder で Soap を使用する試みです。Borland 6 は SOAP ヘッダー (InvokeRegistry.hpp がない) を管理しておらず、リクエストを送信する SOAP サーバーは、このインターフェースのログイン後に Cookie を渡す必要があるため、これまでは成功できなかったと結論付けています。
このログインは最初に次を送信します。
この呼び出しを追加すればOKです:
次に、ユーザー名を HTTPRIO に渡します。
そして、この HTTPRIO が 2 番目のインターフェースに渡されます。
しかし、ヘッダーのコードを生成しない Borland 6 の WSDL インポーターを使用しており、ヘッダーが Invokeregistry.hpp で定義されていないため、「AuthHeader is missing」というエラーが発生します。したがって、HTTPRIO の「BeforeExecute」には、次の要求があります。
一方、Borland XE3 はこの要求を生成しますが、これは問題なく、サーバーから期待される応答をもたらします。
だからまず交換した
に
次に、「<< xoHolderClass << xoInlineArrays」などのオプションを追加しました。
ここで同じ要求を取得しますが、サーバーの応答は NULL 配列ですが、borland xe3 で記述されたテストへの応答には 3 つの項目があります。または、他の操作 (xo... オプションなし) を使用すると、デルファイ インターフェイスのデストラクタでアクセス違反が発生します。
CAPICOM を使用して、XML を作成し、Indy コンポーネントで送信することを考えました (ただし、同じ認証ヘッダーの問題が発生することを期待していますか?)、CAPICOM を使用するか、またはWindows SDK ? ...) しかし、今まで成功せず、前に述べたように、C++ Builder XE3 で開発された dll を使用しようとしています: https://stackoverflow.com/questions/15485276/embarcadero-c-xe3-dll-imported -in-c-xe3-project-library-loads-but-access-v