問題タブ [c++builder-2006]
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++builder - Builder C++ 呼び出し VC++ クラス
クラスを含む Hunspell DLL を VC++ でコンパイルしました...今度は Builder C++ 2006 でその DLL を呼び出してその関数を使用したいのですが...どうすればそれを行うことができますか?
私が試した:
問題は、BuilderC++ 2006 で obj-> の後に shift-space を押した後に関数を表示できるが、実際にはクラス関数を認識しないように見え、Unresolved external '__fastcall Hunspell::add_dic(...); を出し続ける場合です。 ' から参照....
Builder C++ で VC++ dll を呼び出す正確な方法は何ですか? みなさん、よろしくお願いします...
乾杯、ルイジーノ
visual-studio-2010 - Visual Studio 2010 での Borland C++ Builder プロジェクトの表示、ビルド、およびデバッグ
VC2010 を使用して、所有している BCB 2006 プロジェクトを処理したいと考えています。多くのUIを移植する必要があるため、コードをVCに変換したくありません。VS IDE からビルドとデバッグを表示できるようにしたいだけです。
表示: VS プロジェクトを作成すると、ネイティブ BCB コードの表示が可能になると思いますが、UI エディターは表示されません。
構築: VS の「C++ ネイティブ マルチターゲット」オプションを見つけましたが、そこにあるさまざまなオプションを何に設定すればよいかわかりません (水仙は役立つと言及されていますが、既存の機能にどのような付加価値があるかはわかりません)。機能)。
デバッグ: VS 内からこれを行う方法がまったくわかりません。tds2pdb などのデバッグ情報ファイルを変換するスタンドアロンのコンソール ツールがいくつかあります (ドキュメントのリンクはどこですか?)。
このような作業を経験したことがある方がいらっしゃいましたら、アドバイスをいただければ幸いです。
memory-management - bds 2006 C 隠しメモリ マネージャの競合 (class new / delete[] vs. AnsiString)
私はBDS 2006 Turbo C++を長い間使用していますが、より大きなプロジェクト ( CAD/CAM、3D gfx エンジン、および天文計算) の一部で例外がスローされることがあります (たとえば、24 時間 365 日のヘビーデューティー使用で 3 ~ 12 か月に 1 回)。 )。広範なデバッグの後、私はこれを見つけました:
このコードは通常、テンプレート内に_s
あり、クラスにもなる可能性があるため、delete[]
このコードは適切に機能するはずですが、delete[]
構造体では適切に機能しません (クラスは問題ないように見えます)。例外はスローされず、メモリは解放されますが、何らかの形でメモリ マネージャーの割り当てテーブルが破損し、その後、新しい割り当てが間違っている可能性があります (新しい割り当ては、既に割り当てられている領域または割り当てられていない領域と重複する割り当てを作成する可能性があるため、時折例外が発生します)
_s
空のデストラクタを追加すると、突然すべてが正常に見えることがわかりました
さて、奇妙な部分が来ます。AnsiString
これをプロジェクトに更新した後、クラスにも不適切な再割り当てがあることがわかりました。例えば:
このコードdat
にはいくつかの有用なデータが含まれており、後でtxt
行を追加して作成された文字列があるため、txt
数回再割り当てする必要があり、dat
データが上書きされることがありますtxt
(重複していなくても、AnsiString
再割り当てに必要な一時txt
が重複していると思いますdat
)
だから私の質問は:
- code1、code2 で何か間違っていますか?
AnsiString
(再) 割り当てエラーを回避する方法はありますか? (でもまだ使ってる)AnsiString
大規模なデバッグの後 (質問 2 を投稿した後) 、問題を引き起こさないことがわかりました。それらは使用中にのみ発生します。本当の問題は、おそらくOpenGLクライアント間の切り替えにあります。ベクター グラフィックスのプレビューを表示する [開く/保存] ダイアログがあります。これらのVCLサブウィンドウでOpenGLの使用を無効にすると、メモリ管理エラーは完全になくなります。私は何が問題なのかはわかりません ( MFC/VCLウィンドウ間の非互換性、またはコンテキストの切り替えで間違いを犯した可能性が高いため、さらに調査します)。懸念されるOpenGLウィンドウは次のとおりです。AnsiString
- メインVCLフォーム +クライアント領域内のOpenGL
Canvas
- メインMFCの[開く/保存] ダイアログの子 + ドッキングされたプレビューVCLフォーム +クライアント領域内のOpenGL
Canvas
PS
new/delete/delete[]
これらのエラーは、割り当てられたサイズではなく、使用回数に依存します- code1 と code2 の両方のエラーが繰り返されます (たとえば、複雑な ini ファイルをロードするパーサーがあり、ini が変更されていない場合、同じ行でエラーが発生します)。
- これらのエラーは、 と テンプレートを内部動的割り当てと組み合わせて使用する大きなプロジェクト (プレーン ソース コード > 1MB) でのみ検出されます
AnsiString
が、より単純なプロジェクトでも発生する可能性がありますが、まれにしか発生しないため、見逃してしまいます。 - 感染したプロジェクトの仕様:
- win32 noinstall スタンドアロン ( Win7sp1 x64を使用しますが、XPsp3 x32では同じように動作します)
- GDIまたはOpenGl/GLSLを使用する場合は測定しません
- デバイス ドライバーDLLを使用するかどうかを測定しません。
- OCXなし、または非標準のVCLコンポーネント
- DirectXなし
- 1 バイト アラインされたコンパイル/リンク
- RTL 、パッケージ、またはフレームワークを使用しない(スタンドアロン)
悪い英語/文法で申し訳ありません...助け/結論/提案をいただければ幸いです。
c++ - プログラムでユーザー定義の拡張ファイルを開く方法は?
Borland C++Builder 2006 を使用してデータ ロガー GUI ソフトウェアをプログラミングしています。これは私の会社が希望するプラットフォームです。
定義した拡張子を「.evp」として特定のファイルに分析した後、受信したデータを保存しています。プログラムで Save 関数と Open 関数を定義しましたが、正常に動作しました。
現在、ソフトウェアを使用せずに保存したファイルを直接開く方法に問題があります。つまり、保存したファイルをダブルクリックすると、ソフトウェアで自動的に開き、データが表示されます。次に、2 つの質問があります。
- 私のソフトウェアでこの「.evp」ファイルを開くように Windows に指示する方法。
- ソフトウェアで開いたファイルを処理し、定義した Open 関数を使用する方法。
sockets - Indy ソケットを使用した UDP ブロードキャスト: 適切なインターフェイスを選択する方法は?
C++Builder2006 の使用
これらのことを行う古い小さなプログラムを変更しています。
- UDP ブロードキャスト メッセージを送信する (255.255.255.255 アドレスを使用)
- 接続されているすべてのデバイス (RabbitCore RCM3200 を搭載したハードウェア) から応答を取得します。
- 必要に応じて、それらのいずれかの MAC アドレスと、そのデバイスがそれ自体に設定する必要がある正しいネットワーク構成を含む別の UDP メッセージをブロードキャストします。
(これは、デバイスがインストール時に間違った IP/ネットマスクを持つ可能性があり、IP に依存しない方法で設定する必要があるためです。これは、デバイス プロデューサーから確立された方法であるため、変更することはできません。私が何をしているかを説明します)。
私が直面している問題は、ここでよく説明されています。要するに、Win7 はすべてのインターフェイスを介して UDP メッセージを送信するのではなく、「優先」インターフェイスのみを介して送信します。プログラムは Indy UDPClient ソケット (TIdUDPClient) を使用してビルドされているので、そのままにしておきたいと思います。
質問:
- 特定のネットワーク インターフェイスを介して送信するように UDP ソケットを「強制」する方法はありますか? このようにして、「手動で」ループしてブロードキャストをすべての(関連する)ネットワークに送信できます
- そうでない場合....同じ結果を得るにはどうすればよいですか?
c++ - C++Builder 2006: .rc ファイルをコンパイルすると、プログラム アイコンが表示されなくなりました
いつものようにプロジェクト オプションに .ICO ファイルを追加しましたが、(マニフェストを埋め込むための) .rc ファイルをプロジェクトに追加したため、プログラム アイコンが exe に埋め込まれなくなりました。フォームの「アイコン」プロパティに同じアイコンを配置しようとしましたが、表示されますが、エクスプローラーで .exe ファイルのアイコンが表示されません。
どうすればこれを解決できますか?