問題タブ [c++builder-xe2]
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++ - c++-builder: stdcall 型に変換
現在、古い owl-c++-builder-projekt を XE2 と owlnext を使用するように移植しようとしています。古いファイルでは、単純に行を呼び出すことができました
LP_I2Open が定義されている間
これらのコードブロックは、実際には複数のファイルからのものです。この順序は直感的だと思いました。
今、必要に応じてこれを書き直すのにいくつかの困難があります。左側は値を返す変換方法として理解されるようになりましたが、特定の値に割り当てることができないため、「L-Value expected」エラーがスローされます。ただし、FARPROC を LP_I2COpen に適合するものに変換する方法がよくわかりません。変換せずに試行すると、次のエラーがスローされます。
それで、私がこの行で行っている間違いを誰か知っていますか?
よろしく、ジュリアン
global-variables - ユニットがコンポーネントによって呼び出されたときに、C++ ビルダー XE2 の変数が初期化されない
宣言のあるユニット(WebFunctions.h)があります
このユニットはアプリでうまく機能します。しかし、 も宣言するコンポーネントを追加するとWebFunctions.h
、 の初期化はRawURLAllowedChars
行われません ( RawURLAllowedChars = NULL
)。
アプリを正常に動作させるには、コンポーネントのクラス宣言を削除し、WebFunctions.obj
ファイルを削除する必要があります。
注:.cpp
ファイル内の宣言の有無にかかわらず、ファイル内のextern
宣言.h
も機能しません。
これは XE2 のバグですか、何か不足していますか? ありがとう。
Obs.: 内部の Var 宣言#ifndef .. #endif
c++ - ボタンのクリック時に ADOTable の TableName を変更する
私は、2 つのテーブルを含む MS Access で作成されたデータベースを持っています。テーブル #1 が DBGrid に表示されます。ボタンをクリックすると、DBGrid にテーブル #2 が表示されるようにします。のようなもの
ADOTable1->TableName = table_n2
だと思っていましたが、間違っていました。誰かが解決策を知っていますか?
crash - デバッガーで実行するたびに C++Builder XE3 を再起動する必要があるか、次の実行時にアプリがクラッシュします
これはちょっと奇妙で、これは Windows 7 でしか見られないようです (Windows 8 でアプリをビルドすると、これは発生していないようです)。これは C++Builder XE から XE3 で見られます。アプリをコンパイルし (パッケージと rtl を静的にリンク)、デバッガーから実行します。その後、コードを変更し、アプリを再コンパイルして実行しようとすると、コンパイルは問題ないように見えますが、起動しようとするとアプリがクラッシュします。C++Builder を閉じて再度開くと、すべて再構築を実行するか、コンパイルして正常に実行される小さな変更を加えることで、強制的に再構築します。これは毎回そうです。私は過去にrtlを動的にリンクするように切り替えようとしましたが、それが問題を解決するために「現れた」のですが、それが確実な仮定であるかどうかはわかりません. 誰かがこの動作を見たことがありますか、そしてそれを解決する方法を知っている人はいますか?
編集:
コードの前にクラッシュが発生します。コールスタックは次のとおりです。
ところで: このプロジェクトには遅延ロード dll はありません。
firebird - Firebird の挿入が非常に遅い
Firebird データベースでの INSERT ステートメントの実行が遅いという問題があります。パフォーマンス値は次のとおりです。
Windows XP を搭載したノートブックに 3800 件のレコードを挿入するには、約 31 秒かかります (1 秒あたり約 120 件の挿入)。Windows 7 32 ビットを搭載した別の PC では、この同じタスクに 80 秒かかります (1 秒あたり ~ 50 回の挿入)。使用する Firebird のバージョンは、2011 年 10 月から 2.5.1 SuperServer です。使用する接続テクノロジは DBExpress です。
これが私のデータベーステーブルの作成方法です:
そしてこれがそれにアクセスするソースコードです。実際と比較すると多少単純化されていますが (呼び出し元のメソッドは含まれていません)、すべての基本的なことが含まれています。Profiler は、この特定のメソッドがボトルネックであることを示しています。1回の呼び出しには約10ミリ秒かかります。したがって、3800 回の呼び出しには約 38 秒かかります。
コードのコメント部分からわかるように、SQL クエリをパラメータ化して繰り返し実行を高速化しようとしましたが、大きな変更はありませんでした。すべての呼び出しはトランザクション内にあります。
データベース ファイルに対する gstat -h コマンドの出力は次のとおりです。
firebird.conf の DefaultDbCachePages は 2048 です。
レコードの削除および挿入中、fbserver.exe プロセスは 1 つの CPU コアを完全に使用します。
c++ - C++ Builder リンカは関数レベルのリンクをサポートしていますか?
C++ Builder で作成されたさまざまなプロジェクトにほぼ 2 年間取り組んでいます。この間、結果の実行可能ファイルのサイズに関連するいくつかのことに気付きました。私はそれを2つの例で説明しようとしています:
1.今日、1 つのプロジェクトを C++ Builder 6 から C++ Builder XE4 に変換しました。DLL サイズの比較は次のとおりです。
両方のバイナリは、追加のライブラリの静的リンクを使用してリリースとしてコンパイルされます。ライブラリ バージョンを定義するグローバル変数と、製品情報 (バージョン、説明、会社など) を含む実行可能プロパティの変更を除いて、これら 2 つのバージョン間でソース コードの変更はありません。
2.C++ Builder XE2 で作成した VCL プロジェクトに、JCL (JEDI Code Library) プロジェクトからいくつかのファイルを追加しました。私のコードでは JCL からのオブジェクトが作成されないため、コードの一部であってもリンカーは新しいメソッドをリンクすべきではないと思います。それにもかかわらず、バイナリ サイズは 17 900 000 から 19 300 000 に増加しました。他にも小さな変更があったため、正確な数値はわかりません。この増加のごく一部は、170 kB のリソース ファイル JclUnicode.res のリンクに起因する可能性があります。それにもかかわらず、これは、外部コンポーネントを追加してプロジェクトに結果として生じるバイナリ サイズの変化は、エンド ユーザー向けの新しい機能と比較すると適切ではないという私の長年の経験と一致しています。
結果のバイナリには、呼び出されないコードの大部分があるのではないかと疑っています。残念ながら、この仮説を検証する方法はわかりません。使用されたことのないコード/データについて、結果のバイナリを分析できるツールはありますか? C++ Builder リンカは関数レベルのリンクをサポートしていますか? これは、実行可能ファイルをハード ドライブからメモリに読み込むのに必要な時間と、プログラムが占有する RAM メモリのサイズを考慮すると、非常に現実的な問題です。組み込みソフトウェアを開発している私の同僚は、ファームウェアから呼び出されなかった関数を削除することで、そのサイズが 80% 縮小されたという話を私に教えてくれました。
c++ - CImg の変換方法TBitmapに?
私のプロジェクトでは CImg ライブラリを使用しています。画像処理後、C++ Builder XE2 で画像の結果を TBitmap に表示したいのですが、その方法を教えてください。ありがとう。