問題タブ [delphi-5]
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 - タイプ セーフな COM 列挙を実装する方法は?
COM シナリオで Delphi にタイプ セーフな列挙を実装するにはどうすればよいですか? 基本的に、列挙型のプリミティブ定数のセットを、クラスにカプセル化された静的な最終オブジェクト参照のセットに置き換えたいですか? . Java では、次のようなことができます。
カスタマイズされた列挙型を使用して比較を行います。
私は現在、古い Delphi 5 を使用しており、クライアント オブジェクトが必要な列挙型の代わりに整数 (または long) 型を渡さないように、インターフェイスでいくつかの列挙型パラメーターを宣言したいと考えています。ネイティブのデルファイ列挙型を使用する以外に、列挙型を実装するより良い方法はありますか?
delphi - 「アプリケーション」グローバル変数が認識されない
私は Delphi 5 で大規模なプロジェクトに取り組んでいます。今日、アプリの 2 つのブランチをマージした後、数百のユニットの 1 つである UnitMain (メイン フォームのユニットだと思いますか) が Application グローバルの認識を停止しました。
これはかなり奇妙な問題です。UnitMain で Application: TApplication を定義し、それを .dpr プロジェクト ファイルの Application に設定することで、プログラムをコンパイルできますが、アクセス違反が発生します。アプリケーションが特別なものであることに驚きです。
誰かが以前に同じ問題に直面したことがあるか、Delphi VCL の内部の仕組みを十分に知っていて、ここで私を助けてくれることを願っています。
正確なエラーは、コンパイラがこのユニットのアプリケーションを認識しないことです。たとえば、Application.ProcessMessages の場合。呼び出し、エラーは「オブジェクトまたはクラス タイプが必要です」です。他のどのユニットにもこの問題はありません。
string - Delphi CreateProcess コマンドから返された文字列にアクセスできますか?
Win32CreateProcess
関数を使用して、外部実行可能ファイルへの呼び出しを実行しています。実行可能ファイルは文字列を返します。
実行可能ファイルを呼び出した後、返された文字列をキャプチャして問い合わせる方法はありますか? それができない場合は、実行可能ファイルのファイルに文字列を書き出し、呼び出しが終了した後に呼び出し側プログラムでそれを読み取る必要があるかもしれません。それは不自由に思えますが。
delphi - Delphi - クラス TListView が見つかりません
ランタイム パッケージ、dll、または外部リソース (つまり、単一の実行可能ファイル) なしでビルドされた Delphi 5 アプリケーションがあります。クライアント PC にインストールすると、次のエラー メッセージが表示されます。
クラス TListView が見つかりません
また
クラス TImage が見つかりません
これまで何十台もの PC に問題なくインストールしてきましたが、今回の最新のインストールには問題があります。
ターゲット PC は、他のソフトウェアがインストールされていない Windows XP (Service Pack 3) の新規インストールです。
すべてのクラスについて文句を言うわけではありませんが、1つまたは2つだけです。たとえば、TPanel/TForm/TEdit はすべて問題ありません。
誰がこれを引き起こしているのか考えられますか?
編集
新しい PC の exe は、Windows XP Sp1、2、3、Windows Vista、および Windows embedded に至るまで、私が知っている 30 ほどの他の PC にあります。古い PC と新しい PC の両方に古いバージョンがインストールされ、その後、最新バージョンに更新されました。唯一の違いは、最新のインストールではバージョン ジャンプが高かったことです。
delphi - TServerSocket アプリを D5 から D2007 に移行する方法はありますか?
Google で簡単に調べてみましたが、何も見つかりませんでしたが、質問する必要があると感じています。私は本当に何かがあるとは思っていませんが、すべてがうまくいかないときに質問をして、誰もが「落とし穴」について知っていることを発見するよりも、今答えのない質問をしたいと思います...!
全体的なサポート/開発作業を容易にする (および madExcept などを導入する) ために、D5 で記述された半 GUI アプリ (NativeDB を使用して ASA6 に接続) を D2007 に移植し、最終的にそれを有効にしようとしています。コンソールアプリおよび/またはサービスに。(現在の GUI は、美化された開始/停止ボタンとアクティビティ ログにすぎません)。
これは古典的な TServerSocket アプリケーションであり、指定されたポートでリッスンし、クライアントが接続したときにさまざまなことを実行します。NativeDB 側で大きな問題が発生するとは考えていませんが、TServerSocket に関する限り、D5 と D2007 の間に変更 (バグ修正、改善) があるかどうか疑問に思いました。
Indy などのブロッキング ソケットは使用しません。これは、D5 Enterprise ボックスから直接取り出した、scktcomp ユニットの TServerSocket だけです。D2007 で TServerSocket に大きな問題がない限り、コードを大幅に変更するつもりはありません。:-)
delphi - Delphi 5 アプリへの Windows イベント ログのレトロフィット
小さなレガシー Delphi 5 アプリケーションに Windows アプリケーション イベント ログのサポートを追加する (かなり痛みのない) 手段を探しています。起動、シャットダウン、データベースへの接続の失敗などをログに記録したいだけです。
私が見たソリューション/コンポーネントのいくつかは、「エントリ」を読み取ろうとするときに Windows イベント ログ ビューアーがリンクするリソース DLL を作成する必要があることを示唆しているようです。これはそれほど面倒ではないように思えますが、将来アプリケーションをさらに開発する場合は、この DLL を最新の状態に保つ必要があることを念頭に置いておく必要があると思います。
将来のある時点で、おそらく D2007 で記述されたアプリケーションをサービスに変えたいと思うでしょう。
D5 のイベント ログにイベントを追加するための適切なルートを推奨できる人はいますか? Google トロールではなく、特定の「これを使用しましたが、問題ありませんでした」というコメントを探しています (これは自分で行うことができます)。将来が重要です。
delphi - モーダルダイアログが閉じられたときにDelphi CMExitメッセージが送信されませんか?
私が取り組んでいるアプリケーションの一部には、CMExit メッセージの受信時に検証を行うフォーム コントロールがあります。これはまさに Delphi のドキュメントに記載されている方法です (このコード サンプルは Delphi のヘルプ ファイルからのものです)。
これの目的は、コントロールがフォーカスを失うとすぐに検証を実行することです。たとえば、[OK] ボタンをクリックすると、フォーム コントロールはフォーカスを失い、このメソッドが実行され、例外が発生すると、フォーカスがそのフォーム コントロールに戻されます。(したがって、[OK] ボタンの「クリック」イベントは通過せず、ダイアログは閉じません)。
私が抱えている問題は、このフォーム コントロールがモーダル ダイアログ ウィンドウ内にあることです。[OK] をクリックすると、実際に CMExit メッセージが送信され、レコードが更新されます (および検証が行われます)。ただし、フォーム コントロール内で Enter キーを押すと、CMExit メッセージを送信せずにモーダル ダイアログが閉じます。フォーム コントロールが「フォーカスを失う」ことがないかのようです。これは、フォームが実際にデータを検証せずにダイアログが閉じるだけでなく、データ セットも更新されないことを意味します。
この問題を考えると、データセットの更新/検証コードを配置するのに最適な場所はどこですか? これをダイアログ フォーム自体に移動して OnCloseQuery ハンドラーに実装することもできますが、これはフォーム コントロールとフォーム自体の両方でロジックが重複することを意味します。(フォーム コントロールは他の場所で使用されているため、その動作を変更したくありません)。
(コントロールが実際にフォーカスを失うことはないため、CMExit はトリガーされないと推測します。フォームは閉じられますが、フォーム コントロールは閉じたフォームにまだ「フォーカスを持っています」。)
delphi - Delphi 5 で TDBGrid から選択したセルを取得する方法
フォームに DBGrid があり、複数の選択を行いました。選択したセル (電子メール アドレス) を Outlook の「TO ボックス」に送信する必要があります。これを行うにはどうすればよいですか?前もって感謝します
delphi - Delphi 5 で Telnet クライアントを作成する方法
Delphi 5 アプリケーション内で Telnet クライアントを作成するにはどうすればよいですか?
delphi - TPanel コンテンツを印刷するには?
私はTPanelを持っています。このパネルには、TImage の子孫、コントロールを含む他のいくつかのパネルなどがあります。実際、画像にはいくつかの図が含まれていますが、実行時にラベル付きの追加のパネルが作成され、ユーザーに追加情報を提供します。
最近、このパネルを印刷して、そのままの形で紙に載せてくれたらいいのにと言われた。手がかりはありますか?