問題タブ [delphi-7]
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 - クライアント アプリを FB 2.1 に移行する
DBExpress で Delphi 7 を使用しています。アプリを firebird 2.1 に完全に移行したいと考えています。サーバー側で何をすべきかはすでに知っていますが、クライアント側ではよくわかりません。
TSQLConnection コンポーネントで、vendorLib プロパティが GDS32.dll を指していることがわかります。driverName は Interbase で、getDriverFunc は getSQLDriverINTERBASE です。
fbclient.dll を使用して接続するために何をすればよいかわかりません。vendorLib で gds32.dll を fbclient.dll に単純に変更しようとしましたが、アプリでいくつかのアクセス違反が発生しました。
任意のヒント?
delphi - Delphi での Turbo Power systools stExport イベント
私はsystoolsのパッケージからturbopowerのstExportを使用しています。それを使用してデータセットをエクスポートします。それはうまくいきます。クラスは FOnExportProgress を利用可能にします。このクラスにはビジュアル コンポーネントがないため、単純にダブルクリックして Delphi にイベントを作成させるオブジェクト インスペクターはありません。イベントを手動で作成する方法の簡単な例を誰か提供できますか??
ほとんどのビジュアル コンポーネントでは、delphi がこれを提供します。例:
これを手動で作成するにはどうすればよいですか。
イベントを参照するクラスの一部を以下に示します。
OnExportProgress を手動で割り当てるにはどうすればよいですか。
簡単な例を含めてください!
ありがとうございました。
delphi - Delphi - 共有違反のテキスト ファイルを開く
Delphi 7 アプリで読み取り用にテキスト ファイルを開こうとしていますが、別のアプリケーションが既にファイルを開いているため、I/O エラー 32 (共有違反) が発生します。FileMode を「fmOpenRead または fmShareDenyNone」に設定しようとしましたが、これはテキスト ファイルには当てはまらないことに気付きました。
別のアプリケーションで開いているテキスト ファイルを読み取る方法はありますか?
delphi - デルファイ7では、「レイズを除いて...試してみてください。終わり;`まったく意味がありますか?
私が維持しているいくつかのDelphi7コードでは、次の多くのインスタンスに気づきました。
これらのtryブロックは何もしないので、削除できるように思えます。しかし、私は起こりうる微妙な副作用に警戒しています。
これらのブロックが実際にそれらなしでは起こらないことを行うことができるインスタンスを誰かが考えることができますか?
delphi - Delphi: OnBeforePost イベントで TDataSet.Post をキャンセルする
メインのデータ入力画面では、OnBeforePost イベントに OK/Cancel ダイアログがあります。
- OK、物事を自然に任せましょう
- 今すぐキャンセルすると
Dataset.Cancel;
これは、変更をロールバックし、データセットをブラウズ モードにします。
ほとんどのクライアントはこれで問題ありませんが、次のように変更できるかどうか尋ねられました。
- キャンセル、投稿を中止し、現在の変更を維持したまま編集モードにとどまります。
キャンセルする場合は、キャンセル ボタンを使用できます。
ソースを見ると、procedure TDataSet.Post;
この方法でイベントを使用することはできません。
これを行う方法について何か考えがある人はいますか?
フォローアップ: これは私が今それを処理するために選択した方法です
delphi - Delphi で nsIProtocolHandler を実装する
Delphi で nsIProtocolHandler 実装を構築しようとしています。(私は以前に IInternetProtocol を成功させたことがあり、Internet Explorer で得たものを FireFox で使用したいと考えています。) d-geckoプロジェクトのおかげで、何らかの方法で TInterfacedObject マジックを nsISupports マジックにリンクすることができます。要求されたときに nsIModule を提供し、要求されたときに nsIFactory を提供し、要求されたときに nsIProtocolHandler の 1 つを提供し、要求されたときに nsIChannel/nsIHttpChannel の 1 つを提供する DLL を作成します。
ホスト プロセスとして firefox.exe を使用してデバッグすると、ライブラリが読み込まれ、NewURI が 3 回呼び出され、NewChannel が呼び出され、nsIChannel とnsIHttpChannelを実装するオブジェクトが渡されることがわかります。
悩んでいるところです。AsyncOpen から制御を返すまで、取得した nsIStreamListener で OnStartRequest と OnDataAvailable を呼び出すことは想定されていませんが、AsyncOpen が呼び出されたスレッドで制御を取得していないようです。
CreateInstanceByContractID('@mozilla.org/network/protocol;1?name=http',
デフォルトのhttpハンドラー( ...で取得)の周りに自作のラッパーを使用してデバッグを試みました。渡されたリスナーもラップしました。奇妙なことに、チャネル ラッパーが終了した後、同じスレッドでOnStartRequest と OnDataAvailable が呼び出されます。しかし、誰が電話しているのですか?それがラップしようとしていた http チャネルである場合、どのように (同じスレッドで) 生き残り、リスナーを呼び出すための制御をどのように取得しますか? 私は困惑しています。そして立ち往生。
d-gecko プロジェクトの主な開発者に連絡を取ろうとしましたが、応答がありません。
(また、誰かがnsIProtocolHandler の MDC のトーク ページの下部にある私の宣伝文句に気付きましたか?)
(もう 1 つ、C++ で nsBaseChannel から継承するだけで「生活がよりシンプルになる」ことはわかっています。しかし、重要なのは、既存の Delphi プロジェクト コアに FireFox プロトコル ハンドラを追加することです。)
更新:私はさらにいくつかの読書を行いました.ここでも言及されています:「ストリームリスナーのメソッドは、asyncOpenを呼び出すスレッドで呼び出されます[...]」しかし、最初に「ホスティングアプリケーション」から呼び出されずにそれがどのように可能であるか、私には明らかではありません。それはXPCOMのトリックですか?Firefox のソースを入手する前に、もっと (もっと) 読む必要があると思います。
delphi - Delphi 7 で EXE アイコンを設定する
Delphi アプリケーションの Windows エクスプローラとデスクトップ ショートカットに表示されるアイコンをカスタマイズしようとしています。
Delphi 7 IDE で、[プロジェクト オプション] ダイアログの [アプリケーション] タブに目的のアイコンをロードしました。目的のアイコンをグラフィックとして表示します。
必要ではないと思いましたが、アイコンを TMainForm Icon プロパティとして設定しました。
ただし、結果の EXE にはデフォルトの D7 アイコンが表示されます。私は何が欠けていますか?
delphi - Delphi 7 でポインタが指す型のサイズを取得することは可能ですか?
次の関数で「レコード」タイプのサイズを取得したい。しかし、うまくいかないようです:
たとえば、次のレコードのサイズは 8 バイトです。
ただし、GetDataSize(@a)
常に 1 を返します (a はもちろん SampleRecord 型の変数です)。私は何をすべきか?
Delphi には、 P が指す型のサイズに対応するメモリ ブロックを割り当てることができるプロシージャprocedure New(var P: Pointer)があることに気付きました。どのようにサイズを取得できますか?
delphi - インスタンス化されたすべてのオブジェクトをどのように一覧表示しますか?
FASTMM4またはデフォルトのメモリマネージャを使用して、すべてのアプリケーションでインスタンス化されたすべてのオブジェクトを一覧表示するにはどうすればよいですか?