問題タブ [delphi-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.

0 投票する
3 に答える
1554 参照

delphi - TToolBar に TPanel を追加すると、TPanel と TToolButton のどちらが取得されますか?

Delphi (2006) がクォンタムになると: 観察方法によっては、TToolBar と TPanel の両方のように見える「何か」があります。何が起こっているのか理解したいです。

作成方法と何が起こるかは次のとおりです。

  1. DFMで

    • bar という名前の TToolBar を追加します。
    • その TToolBar に TPanel を配置します。
  2. コード内および実行時:

    • パネルがボタン bar.Buttons[] のリストに表示されます。インデックス i としましょう
    • コンパイラの観点から見た bar.Buttons[i] は TToolButton です。
    • bar.Buttons[i].ClassName = 'TPanel'
    • (bar.Buttons[i] is TToolButton) = true ですが、これはコンパイラが「is」out への呼び出しを最適化するためです。
    • 実際、IsBarButton(bar.Buttons[i]) は IsBarButton 関数 (以下で定義) に対して false です。
    • bar.Buttons[i].Name は、DFM で TPanel に付けた名前です
    • デバッグで値 bar.Buttons[i] を調べる:
      • 実際の TToolButton にはない「キャプション」プロパティがあります。
      • 奇妙なことに、TToolButton.Indeterminate (=true) のように、TToolButton が持っているすべてのプロパティを持っています。

IsToolButton:

したがって、bar.Buttons[i] は TToolButton である場合とない場合があります...どうしたのですか?

(一番下の話は、自分の TPanel を本物の TToolButton と区別したいということです。これは多かれ少なかれハックな方法で行うことができます。ここでこの質問をすることで、ここで実際に何が起こっているのかをより完全に理解することが私の目標です。)

質問: 何が起こっていますか? サブ質問: TPanel を TToolBar に追加することは正当ですか?

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

delphi - ToolsApi を使用して Delphi 2010 にカスタム フォームを登録する

TForm の子孫であるカスタム フォームがあります。ToolApi を使用してカスタム モジュールを登録し、リポジトリに追加しました。ここまでは順調ですね。しかし、[ファイル] -> [新規] をクリックすると、カスタム フォームのアイコン付きのカテゴリが表示されますが、無効になっています。アイコンがグレー表示され、選択してメニューからカスタム フォームを作成し、プロジェクトに追加することができません。

何が間違っているのか、何を試すべきなのか、提案やヒントはありますか?

ソースコードを転送するにはここをクリック...

前もって感謝します。

編集:

私が重要だと思うコードのリストもあります:

0 投票する
2 に答える
954 参照

delphi - readbuffer の使用中に string ではなく string[1] を使用する理由

こんな記録を残しています

このように TStream を使用してデータを読み込んでいると、例外が発生します

しかし、以下のコードを使用すると、正常に動作していました

では、String と String[1] の使用の違いは何ですか?

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

delphi - ステートレス HTTP セッションでの進行状況のフィードバック

リモート メソッドを実行するには、ステートレス サーバーをプログラムする必要があります。クライアントは、JSON パラメーターを指定した REST を使用して、メソッド名とそのパラメーターを渡します。結果を処理した後、セッションは閉じられます。プロトコルとして Indy10、TCP/IP を使用する必要があるため、IdHTTPServer の使用を検討します。

大規模な結果セットは、Indy10 によってチャンク化され、分割してクライアントに送信されます。

私の問題は今です:

サーバー上のメソッドは、結果を生成するのに時間がかかる場合、進捗情報を提供します。これらは短いメッセージです。クライアントに返信するにはどうすればよいですか?

これまでwriteflushサーバーで使用してきましたが、クライアントはリクエストが終了するのを待ってから、進行状況情報を含む完全な結果セットを返しました。クライアントでそのような進行状況情報を表示/処理しながら、同じ要求でさらにデータを受信するために接続を開いたままにするにはどうすればよいですか?

0 投票する
2 に答える
817 参照

delphi - Delphi2006実行可能ファイルのコードページを設定する方法

Multilizer 5.1を使用してプログラムを翻訳し、Delphi2006でプログラミングしています。ここで、Multilizerの新しい言語としてポーランド語を追加しました。しかし、実行可能ファイルを開くと、Multlizerは「ポーランド語はコードページでサポートされていません」と言います。

地域設定をポーランド語に調整すると、実行可能ファイルを開くたびに、地域設定が元の設定であるオランダ語に戻ります。プロジェクトオプションでCodePage設定を設定する必要があるかもしれませんが、ドロップダウンリストにはオプションが表示されません。

何か案は?

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

delphi - スクリーンセーバーの開始と停止

単純なはずだったと思いました。PCを強制的にスクリーンセーバーモードにし、D2006)アプリでチェックインしている条件が満たされたら終了します。うまくいかないようです:

SystemParametersInfoResultは、いずれの場合もtrueを返します。SystemParametersInfoの呼び出しは効果がないようです。[コントロールパネルの表示プロパティ]ダイアログの[プレビュー]ボタンを使用してPCをSSモードにした場合、コードを実行しても何も起こりません。

0 投票する
2 に答える
362 参照

delphi - Windows XP Embedded で実行している Delphi 2006 アプリでメモリ エラーが発生するのはなぜですか

FastMM4 を使用する D2006 アプリがあります (たとえば、DPR ファイルの uses 句の先頭に「FastMM4」が含まれています)。とにかく、Delphi がメモリ マネージャーとして FastMM4 を使用していることは知っていますが、ダウンロードしたバージョンには、より多くのデバッグ ダンプ オプションがあります。

最近、Windows XP が組み込まれたシングルボード タブレット タイプの産業用 PC でアプリを実行しようとしました。プロセッサーは非インテル「Vortex」チップです。アプリは起動時にメモリ エラーで失敗し、メモリが解放された後にメモリへのアクセスに関する FastMM4 からの苦情で終了します。

ソース コードから FastMM4 の痕跡をすべて削除すると、問題が解決するようです。アプリは問題なく動作します。

私の質問。この問題を引き起こす FastMM4 のダウンロード バージョンについては何ですか? ASM コードの使用に関連していると思われる FastMM4 および Intel 以外のプロセッサでのクラッシュに関する逸話を見てきました。FastMM4 には、非 ASM コードの生成を強制するディレクティブが含まれていますが、それでは問題は解決しません。

FastMM4 の統合された D2006 バージョンにまだ問題が存在する可能性があることを少し心配していますが、まだ確認していません。

0 投票する
2 に答える
474 参照

delphi - {$ifopt FINITEFLOAT ON} がコンパイルされないのはなぜですか?

私は構造を持っています:

私のソースでは、それはコンパイルされません! それは愚かなことに違いない。エラーは次のとおりです。

E1030 無効なコンパイラ ディレクティブ: '$IFOPT'

最初の行ですが、それは文句を言っている FINITEFLOAT です。IFOPTの引数にはR+などの一文字ディレクティブ以外は指定できないようです。

ここで何か不足していますか?

0 投票する
4 に答える
3172 参照

database - Delphi 2010を使用してBLOBからロードするときにJpegエラー#51が発生する、問題ありw Delphi 2006

Delphi 2006で開発された古いアプリケーションがあり、でいくつかの変更を加える必要があります。

このアプリでは、MsSQLの「画像」フィールドから画像を読み込んでいますが、delphi 2010でコンパイルすると、「発生した例外クラスEJPEGとメッセージ「JPEGエラー#51」」というエラーが表示されます。

データベースから画像を取得するコード:

少しグーグルして、エラー#51が意味することを発見しました:JERR_NO_QUANT_TABLE、それが意味するものは何でも。

Delphi 2006でコンパイルすると、同じコードがエラーなしで正常に動作するので、D2010の何が問題になっていますか?

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

delphi - TVarRecとVariantの間で変換する方法は?

TVarRec値とVariant値を変換する標準的な方法はありますか?

'constの配列'を解析し、その値を使用してTMSQueryのパラメーターを設定したいと思います。これを行うには、列名のリスト(TMSQuery.KeyFieldsから生成)を使用し、配列の値をKeyFieldsの列名と(位置ごとに)照合し、列名を使用して、ParamByNameを使用して対応するパラメーターを設定します。 。

以下のコードは私が思いついたものですが、VarRecToVariantはあまりエレガントではないようです。より良い解決策はありますか?

ノート:

  • constの配列の値は、クエリのパラメータによって異なります。呼び出し元はこれらが何であるかを知っていますが、配列を使用するメソッドは、予想される数またはタイプを知りません。つまり、メソッドをRead(name:string; age:integer)に変更することはできません。
  • パラメータは、値がconstの配列で指定されているのと同じ順序で使用されるとは限りません。この例では、keyFieldsは "Name、Age"として指定されていますが、クエリはAgebeforeNameを使用しています。これは、Params [i] .Value:=keyValues[i]が機能しないことを意味します。とにかくVarRecToVariantはまだ必要だと思いますが、これは避けようとしています)。