問題タブ [delphi-2007]

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 投票する
4 に答える
1404 参照

delphi - Delphi 2007 (または 2009) のビルド イベントはビルド構成に関連付けられていますか?

Delphi 2007 で特定のビルド構成に対してのみビルド イベントを追加することは可能ですか?

私は 2007 を使用していますが、2009 でも何ができるか興味があります。

乾杯サム

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

delphi - Delphi 2007 ヘルプの統合

私は 2008 年の初めに Delphi 2007 に移行しました。すべてのツールとコンポーネントを移行するのに長い時間がかかりましたが、もう一度急いで移行するつもりはありません。私は Delphi 6 から移動しました。

ただし、MSDN / F1 ヘルプの「統合」は、かなり頻繁に私を悩ませ続けています。必要に応じて D6 のヘルプ ファイルと個々のベンダーのヘルプ ファイルにアクセスしますが、古いメソッドにカーソルを置いて操作する方法ほど役に立たないことは確かです。F1 をクリックします。特にすべてのベンダーファイルが統合されている場合は、アプローチに役立ちます。

私はパーティーに非常に遅れているようですが、この意見は私だけではなかったようです: http://blogs.embarcadero.com/deeelling/2007/08/21/38290

Embarcadero では、Delphi 2007 用の CHM ファイルをダウンロードできるようになっています。それらを完全に統合し、役に立たない MSDN の怪物を完全に取り除く方法はありますか?

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

delphi - CreateProcess と WaitForSingleObject が 2 つの PDF ファイルの 2 番目で失敗する

全て

私は Delphi 2007 で CreateProcess と WaitForSingleObject を使用してファイルを開き、ファイルが閉じられるのを待ちます。2 つの PDF ファイルを続けて開くと、2 番目の WaitForSingleObject がすぐに返されることがわかりました。また、これはjpgおよびtifファイルでは発生しますが、txtファイルでは発生しないことがわかりました。また、2 番目の PDF を開くのに、単独で開いた場合よりも 10 秒長くかかります。また、Vista と XP の両方、およびさまざまなコンピューターで発生します。CreateProcess を間違って使用していますか、それとも別のものですか?

どんな助けでも大歓迎です。

よろしく

ボブ

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

delphi - Delphiでは、IInterfaceリファレンスが派生しているが明示的にサポートされていないインターフェイスを実装しているかどうかをどのように確認できますか?

次のインターフェイスとそれらを実装するクラスがある場合-

次のコードは「Bad!」を出力します -

これは少し面倒ですが理解できます。IBaseはTImplementationがサポートするGUIDのリストに含まれていないため、サポートをIBaseにキャストできません。宣言を-に変更することで修正できます。

それでも、それをしなくても、AはIDerivedであり、IDerivedはIBaseであるため、AがIBaseを実装していることはすでに知っています。したがって、チェックを省略した場合、Aをキャストでき、すべてが正常になります-

しかし、IBasesを汎用コンテナ(たとえばTInterfaceList)に入れ始めると、問題が発生します。IInterfacesしか保持できないため、キャストを行う必要があります。

不一致の型をキャッチするために、ある種のアサーションが必要です。この種のことは、Is演算子を使用してオブジェクトで実行できますが、インターフェイスでは機能しません。さまざまな理由から、サポートされているインターフェイスのリストにIBaseを明示的に追加したくありません。ハードキャストIBase(List [0])が安全な方法である場合に、真と評価されるような方法でTImplementationとアサーションを記述できる方法はありますか?

編集:

答えの1つに出てきたので、TImplementationが実装するインターフェイスのリストにIBaseを追加したくない2つの主な理由を追加します。

第一に、それは実際には問題を解決しません。Test2で、式が次の場合:

trueを返します。これは、ハードキャストを実行しても安全であることを意味するものではありません。QueryInterfaceは、要求されたインターフェースを満たすために別のポインターを返す場合があります。たとえば、TImplementationがIBaseとIDerived(およびIInterface)の両方を明示的に実装している場合、アサーションは正常に渡されます。

しかし、誰かが誤ってアイテムをIInterfaceとしてリストに追加したと想像してください

アサーションは引き続き通過します-アイテムは引き続きIBaseを実装しますが、リストに追加された参照はIInterfaceのみです-IBaseにハードキャストしても意味のあるものは何も生成されないため、次のハード-キャストは安全です。動作が保証されている唯一の方法は、キャストまたはサポートを使用することです。

ただし、これは、リストに項目を追加してIBaseタイプであることを確認するコードの責任であるため、イライラするパフォーマンスコストです。これを想定できるはずです(したがって、この想定がfalse)。誰かがいくつかのタイプを変更した場合に後で間違いを見つけることを除いて、アサーションは必要さえありません。この問題の元のコードもかなりパフォーマンスが重要であるため、ほとんど達成されないパフォーマンスコスト(実行時に不一致の型をキャッチするだけですが、より高速なリリースビルドをコンパイルする可能性はありません)は避けたいものです。

2番目の理由は、参照が等しいかどうかを比較できるようにしたいのですが、同じ実装オブジェクトが異なるVMTオフセットを持つ異なる参照によって保持されている場合、これは実行できません。

編集2:例を使用して上記の編集を拡張しました。

編集3:注:問題は、ハードキャストを回避する方法ではなく、アサーションが通過した場合にハードキャストが安全になるようにアサーションをどのように定式化できるかです。ハードキャストステップを別の方法で実行する方法、または完全に回避する方法はありますが、実行時のパフォーマンスコストがかかる場合、それらを使用することはできません。後でコンパイルできるように、アサーション内のチェックのすべてのコストが必要です。

そうは言っても、誰かがパフォーマンスコストやタイプチェックの危険性なしに問題を完全に回避できれば、それは素晴らしいことです!

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

delphi - Delphi - この奇妙な TGrid の動作を修正するにはどうすればよいですか?

デルファイ 2007.

画面に収まるよりも多くの行を持つ TGrid があり、グリッドの高さは、下部に部分的に描画された行があるようなものです。この部分的な行をクリックすると、ジャンプして完全に表示されます (Grids.pas の「ClampInView」というプロシージャを使用)。しかし、それは止まりません。マウスが新しい部分的に描画された行の上にあるので、それもジャンプします。

最終的な効果は、部分的に描画された行をクリックすると、垂直列のセルの選択が開始され、一番下まで (またはマウスを離すまで) 回転することです。

私はこれを、100行の単一のグリッドとコードなしの新しいwinformsプロジェクトで複製したので、コードで間違っていることではないと確信しています。

私が実際のコードで持っているフォームはドラッグアンドドロップタイプの動作をしているので、それは私にとって悪いことです.0.1秒後に部分的な行をクリックして離すと、セル内のアイテムがピックアップされ、約50行下にドロップされます. これは、セルをクリックしたときに予想されることではありません。

これを修正/回避する方法について何か提案はありますか?

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

delphi - Delphi: ソース ファイルに戻るまで実行をデバッグする方法は?

プログラムを実行して例外が発生すると、続行するか中断するかを尋ねられます。

ブレークを選択すると、例外の発生元を確認できますが、ブレークがソース ファイルの 1 つではないライブラリまたはシステム ファイルにある場合 (例外がSystem.pasまたはにあるとします) 、返されるまでControls.pas手動で実行を進める必要があります。F8コードのどの部分で例外が発生したかを確認できます。

これには長い時間がかかる場合があります。

コードで低レベルの例外をキャッチする必要があることはわかっていますが、この例では、例外ハンドラーの 1 つにヒットしていません。

言い方はありますか

  • ファイルXまたはファイルに到達するまで、実行を順方向に実行します
  • プロジェクト固有のファイルに戻るまで。

また、他のコンパイラ/IDEがこれをどのように処理するかについての一般的な好奇心から興味があります。

これを十分に明確にしていない場合は、お詫び申し上げます。

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

delphi - WSDL インポーターが障害のあるサーバーを生成する

私は、サード パーティによって作成された wsdl 仕様を実装する SOAP サーバーを起動しようとしています (これは正しい用語ですか?)。Delphi の wsdl インポーターを使用しました。生成されたコード (の一部) は次のようになります。

呼び出されると、サーバーは「'MiniMessageType' という名前のメソッドはインターフェイス 'miniPortType' でサポートされていません」と言います。

関数の名前とメッセージのメイン要素の名前を同じにすることによってのみ、これを機能させることができます。

違う名前でもいいと思います。少なくともsoapUIは文句を言いません。そして、実際にはwsdlをそのまま実装するしかありません。これを回避する方法を知っている人はいますか?

Delphi 2007 を使用しています。

ありがとう、ミエル。

0 投票する
6 に答える
5846 参照

delphi - Indy 9 と Indy 10 の違いは何ですか?

Delphi 2007 アプリケーションの C# への移植を担当していますが、Delphi の経験はまったくありません。Delphi に含まれる 2 つの Indy バージョン、Indy 9 と Indy 10 の違いは何だろうと思っています。この時点では、Indy とは何かさえわかりません。誰かが私を助けることができますか?Delphi ライブラリのバージョンが異なるだけですか? どちらか一方を使用することの意味は何ですか?

ありがとう!

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

delphi - *ときどき* Delphi で定数に代入するときにエラーが発生する

Delphi 2007 とすべてのパッチとアップデートを使用しています。

2 つの異なるプロジェクトで使用されるファイルがあります。そのファイルには手順があり、次のように簡略化します。

定数に割り当てることができないため、Inc() コマンドは失敗するはずです。あるプロジェクトでは、その旨のエラーが表示されます (そのプロジェクトを「Accurate」と呼びます)。他のプロジェクトでは、エラーは発生しません (「偽物」と呼びます)。また、警告も表示されません。コンパイラがこの不正なコードを通過させる理由がわかりません。

プロジェクトBogusで試したことは次のとおりです。

1 - 行の途中で「slkdjflskdjf」と入力するなど、明らかなエラーを導入する

結果: エラーが表示されます。これは、このファイルを実際にコンパイルしようとしていることを示しています。

2 - .DCU を削除し、プロジェクトを再構築します

結果: .DCU が再生成され、プロジェクトがこの誤ったコードを本当にコンパイルしていることを再度証明します。

なぜこの動作が発生するのかについて考えている人はいますか? より具体的には、なぜあるプロジェクトでは発生し、別のプロジェクトでは発生しないのでしょうか? 定数への割り当てを許可するあいまいなコンパイラ オプションはありますか?

最後に 1 つ: どちらのプロジェクトも Delphi 5 から変換されています。Delphi 5 で同様のコードを使用すると、どちらも正常にコンパイルされます。

編集:ご協力ありがとうございます。割り当て可能な型付き定数ディレクティブを変更した後、両方のプロジェクトで一貫した動作を得ることができます。今日、新しいことを学びました...

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

wcf - 名前付きパイプバインディングを使用して Delphi から WCF と通信するにはどうすればよいですか

netnamedpipebinding を使用して、Delphi 2007 を使用して WCF サービスと通信できますか?

もしそうなら、どうやって?