問題タブ [delphi]
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.
delphi - Aggregate フィールドの作成時に、TClientDataSet Aggregates 仕様が自動的に追加されない
TClientDataSet に集計フィールドを作成する必要がありますが、ドキュメントで述べられているように:
[OK] を選択します。新しく定義された集計フィールドがクライアント データセットに自動的に追加され、その Aggregates プロパティが自動的に更新され、適切な集計仕様が含まれます。
新しい集計フィールドを追加すると、集計仕様が TClientDataSet の Aggregates に追加されないため、その OnUpdateMethod を使用できません。
また、新しい集計フィールドの OnChange イベントを処理しようとしましたが、まったく発生しません。
私は何か間違ったことをしていますか?集約されたフィールドを持ち、値が変化するすべてのイベントを発生させたいだけです。
これはデルファイで壊れていますか?ドキュメントに記載されている内容は、実際の動作を反映していないためです。
編集: @Michal Sznajder 私は Delphi 2007 を使用しています
delphi - タイプ セーフな COM 列挙を実装する方法は?
COM シナリオで Delphi にタイプ セーフな列挙を実装するにはどうすればよいですか? 基本的に、列挙型のプリミティブ定数のセットを、クラスにカプセル化された静的な最終オブジェクト参照のセットに置き換えたいですか? . Java では、次のようなことができます。
カスタマイズされた列挙型を使用して比較を行います。
私は現在、古い Delphi 5 を使用しており、クライアント オブジェクトが必要な列挙型の代わりに整数 (または long) 型を渡さないように、インターフェイスでいくつかの列挙型パラメーターを宣言したいと考えています。ネイティブのデルファイ列挙型を使用する以外に、列挙型を実装するより良い方法はありますか?
c++ - 64bit メモリ割り当て
シンプルな 64 ビット メモリ管理を行うために、C++ で Delphi 互換の dll を作成するように依頼されました。
その背景には、Delphi のシステムが、32 ビットのアドレス指定可能空間の外側にある大量のメモリ チャンクを割り当てる必要があるということがあります。Delphi の開発者は、利用可能な Delphi コマンドでメモリを割り当てることができないと説明してくれました。彼は 64 ビット アドレスを保持できると言っているので、私が提供する関数を呼び出してメモリを割り当て、64 ビット ポインターを彼に返したいだけです。次に、後でメモリを解放する別の関数。
今、私は自由にVS 2008しか持っていないので、最初にDelphi互換のdllを最初に作成できるかどうかさえわかりません。
Delphi の専門家なら誰でも私を助けてくれます。車輪を再発明することなく、彼が必要とするものを達成する方法があるかもしれません. 他の開発者は、Delphi で以前にこれに遭遇したに違いありません。
すべてのコメントに感謝します。
delphi - Delphi で非同期ソケット プログラミングを行う慣用的な方法は何ですか?
Delphi でネットワーク コードを書いている人が、Windows スタイルのオーバーラップ非同期ソケット I/O を使用する通常の方法は何ですか?
この質問に関する私の以前の調査は次のとおりです。
Indyコンポーネントは完全に同期しているようです。一方、ScktComp ユニットは WSAAsyncSelect を使用しますが、基本的には BSD スタイルの多重化されたソケット アプリのみを非同期化します。ループ内の select() から戻ってきたかのように、単一のイベント コールバックにダンプされ、すべてのステート マシン ナビゲーションを自分で行う必要があります。
.NET の状況は、継続が Socket.BeginRead に直接渡される Socket.BeginRead / Socket.EndRead を使用すると、かなり良くなり、そこから元に戻ります。クロージャーとしてコード化された継続には、明らかに必要なすべてのコンテキストとそれ以上のものがあります。
visual-studio - Delphi ブックマークに相当する Visual Studio
私は長年DelphiCTRLを使用しており、現在は Visual Studio に移行していますが、番号付きのブックマーク ( + K+1でブックマーク 1 を設定し、CTRL+ Q+1でブックマーク 1 に移動) を今でも懐かしく覚えています。
Visual Studioに相当するものはありますか? Delphi の後で、VS のばかげたブックマークは雑用だと思います。ブックマークしてから、ファイル内の特定の場所に戻りたい。
delphi - 配列をソートする最良の方法
レコード内のフィールドの 1 つに基づいて並べ替えたいレコードの配列があるとします。これを達成するための最良の方法は何ですか?
delphi - Delphi 7で、なぜconstに値を割り当てることができるのですか?
あるプロジェクトから別のプロジェクトにDelphiコードをコピーしたところ、古いプロジェクトではコンパイルされたものの、新しいプロジェクトではコンパイルされないことがわかりました。コードは次のようになります。
したがって、新しいプロジェクトでは、Delphiは「左側を割り当てることができない」と文句を言います-理解できます!しかし、このコードは古いプロジェクトでコンパイルされます。だから私の質問は、なぜですか?constsを再割り当てできるようにするコンパイラスイッチはありますか?それはどのように機能しますか?constsはコンパイル時にそれらの値に置き換えられたと思いましたか?
delphi - ClickOnce を使用してネイティブの Delphi アプリケーションを展開することは可能ですか?
Delphi アプリケーションの起動に使用されるスタブ C# exe なしで、ClickOnce を使用してネイティブ Delphi アプリケーションを展開することは可能ですか?
同じ質問が、VB6、C++、およびその他のネイティブ Windows アプリケーションにも当てはまります。
delphi - Delphi2007のHelpInsightドキュメント
私はD2007を使用しており、HelpInsight機能(D2005以降に提供)を使用してソースコードを文書化しようとしています。私は主にHelpInsightツールのヒントを機能させることに興味があります。さまざまなWebサーフィンと実験から、私は次のことを発見しました。
- トリプルスラッシュ(///)コメントスタイルの使用は、他の文書化されたコメントスタイルよりも頻繁に機能します。すなわち:
{*! comment *}
そして{! comment }
- コメントは、その目的の宣言の前に置く必要があります。ほとんどの場合、これはコードのインターフェースセクションにそれらを配置することを意味します。(明らかな例外は、現在のユニットの外部からアクセスできないため、実装ブロックで宣言されているタイプと関数の場合です。)
- 最初のコメントは関数に対するものにすることはできません。(つまり、タイプ用である必要があります。または、少なくとも、HelpInsight機能が機能する前にパーサーが「type」キーワードを認識している必要があるようです)
これらの「ルール」に従っているにもかかわらず、Help-insightが私が書いたコメントを見つけられないことがあります。1つのファイルで正しいHelpInsightツールのヒントが生成されませんが、このファイルを別のダミープロジェクトに含めると、正しく機能します。
HelpInsightを機能させるためのその他の指針/コツはありますか?
delphi - 明示的な呼び出しがない場合、Delphi 呼び出しはオーバーライドされたプロシージャで継承されますか
コードに明示的な呼び出しがない場合、つまり(継承された;)オーバーライドされたプロシージャで継承されたDelphi呼び出しはありますか、私は次の構造を持っています(スーパークラスからサブクラスへ)
TForm >> TBaseForm >> TAnyOtherForm
プロジェクト内のすべてのフォームは TBaseForm から派生します。これは、すべてのフォーム (セキュリティ、検証など) に使用されるすべての標準セットアップおよび破壊的な部分が含まれているためです。
TBaseForm には、これを行うためのコードを含む onCreate および onDestroy プロシージャがありますが、誰か (つまり私) が TAnyOtherForm の onCreate に継承を追加するのを忘れた場合、Delphi は私のためにそれを呼び出しますか? 必須ではないというウェブ上の参照を見つけましたが、コードから省略された場合に呼び出されるかどうかはどこにもありません。
また、継承を呼び出す場合、いつ呼び出されますか?