問題タブ [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.
delphi - ソフトウェアを分析している可能性のあるデバッガーやその他のツールを検出するにはどうすればよいですか?
非常に単純な状況です。私は Delphi 2007 でアプリケーションに取り組んでいます。このアプリケーションは、多くの場合「リリース」としてコンパイルされますが、デバッガの下で実行されます。また、回帰テストのために、SilkTest の下で実行されることもあります。これはとても楽しいですが、私は何か特別なことをしたいです...
アプリケーションがデバッガー/回帰テスター内で実行されているかどうかを検出したいのですが、その場合は、どのツールが使用されているかをアプリケーションに認識させたいのです! (したがって、アプリケーションがクラッシュしたときに、この情報をエラー レポートで報告できます。)
提案、解決策はありますか?
delphi - Citrix と Delphi 2007 アプリケーション間の問題について知っている人はいますか? (そしておそらく他の開発言語?)
状況は単純です。いくつかの異なる手法を使用する複雑な Delphi アプリケーションを作成しました。メイン アプリケーションは WIN32 モジュールですが、一部は .NET アセンブリとして開発されています。また、Web サービスと通信したり、特定の Web サイトからデータを取得したりします。レジストリ内のいくつかの追加設定を使用して、ほとんどのユーザー データを MS Access データベース内に保持します。メモリ内では、すべてのデータが XML ドキュメント内で変換され、システムがクラッシュした場合に備えてバックアップとしてディスクに保存されることがあります。(したがって、ユーザーは自分のデータを回復できます。) XML ファイルには、読み取り専用のデータもあります。アプリケーションは他のアプリケーションも実行し、それらを終了させたいと考えています。全体として、これはかなり複雑なアプリケーションです。
このアプリケーションでは Citrix をサポートしていませんが、少数のユーザーは Citrix サーバーでこのアプリケーションを使用しています。(基本的に、これらのユーザーはよりモバイルに対応できます。)しかし、私たちは Citrix をサポートしていないと言い続けていますが、それらの顧客は、時々発生する傾向があるいくつかの問題を解決するように私たちに圧力をかけようとしています。
主な問題は、Citrix システムで発生するランダムな例外のようです。同じ場所にあることはなく、多くの場合、メモリの問題に関連しているように見えます。すでに多くのエラー レポートが寄せられており、さまざまなエラーが多すぎます。したがって、これらすべてを解決するのは複雑になることはわかっています。
そこで、もう少し一般的な話をしたいと思います。Delphi (2007) を Citrix システムで実行した場合に発生する可能性のある問題について知りたいだけです。特に、このアプリケーションが Citrix に対応するように設計されていない場合はなおさらです。Citrix を公式にサポートするつもりはありませんが、それらの顧客を支援できれば幸いです。彼らが私たちにもっとお金を払うというわけではありませんが、それでも...
Delphi アプリケーションが Citrix システムで発生する可能性のある一般的な問題を知っている人はいますか? 一般的なCitrixの一般的な問題について知っている人はいますか? Citrix の問題に対する Silver Bullet または Golden Hammer ソリューションはありますか?
ところで。Citrix についての私の知識は、このウィキペディアのエントリとこの Web サイトに限られています...そして、少しGoogle で調べました...
multithreading - ノンブロッキングマルチスレッド同期のためのロックフリー、ウェイトフリー、およびウェイトフリーアルゴリズム
マルチスレッド プログラミングでは、2 つ以上のスレッド/タスク間のデータ転送の同期を表すさまざまな用語を見つけることができます。
正確に言えば、あるアルゴリズムは次のとおりです。
Lock-free の意味は理解できますが、同期アルゴリズムが Wait-Free または Wait-Freedom であると言えるのはいつですか? マルチスレッド同期用のコード (リング バッファ) をいくつか作成しましたが、Lock-Free メソッドを使用していますが、
- アルゴリズムは、このルーチンの最大実行時間を予測します。
- このルーチンを最初に呼び出すスレッドは、一意の参照を設定します (このルーチンの内部)。
- 同じルーチンを呼び出している他のスレッドがこの参照をチェックし、設定されている場合は、最初に関与したスレッドの CPU ティック カウント (測定時間) をカウントします。その時間が長い場合、関連するスレッドの現在の作業が中断され、彼のジョブがオーバーライドされます。
- 最後にタスクスケジューラから割り込まれた(リポーズされた)ためにジョブを終了していないスレッドは、自分に属していない場合は参照を確認し、再度ジョブを繰り返します。
したがって、このアルゴリズムは実際にはロックフリーではありませんが、使用中のメモリロックはなく、関連する他のスレッドは、再配置されたスレッドのジョブをオーバーライドする前に一定時間待機する (または待機しない) ことができます。
RingBuffer.InsertLeft関数を追加:
ここでRingBufferユニットを見つけることができます: RingBuffer、CAS 関数: FockFreePrimitives、およびテスト プログラム: RingBufferFlowTest
c++ - Delphi/WIN32 で Infocardapi.dll を使用したいのですが、ヘッダー ファイルが必要です
Microsoft には、CardSpace と呼ばれる小さな機能があります。これは、Microsoftによる InfoCardsの実装です。Microsoft には、その使用方法を説明する優れたドキュメントがあり、便利です。また、Google 検索を行っても有用な回答はあまり得られませんが、膨大な量のノイズが発生します。(主な理由は、この DLL が何であるか、またはこの DLL を何らかのダウンロードとして提供しているサイトであることに疑問を持っているためです。後者は、Windows Vista および .NET 3.0 以降の一部であるため、疑わしいです。)
基本的に、Delphi 2007 内でこの DLL からすべての機能を呼び出す必要があります。この DLL の C++ ヘッダーがあれば、それを変換できます。または、関数、パラメーター、データ型などに関するその他の情報かもしれません。
delphi - 2つのフォームをめくる
それは私にとって非常に実用的な解決策のように見えますが、私は悪いかもしれない何かを支配しているのだろうかと思っています...
ユーザーがウォークスルーする必要のある2つのフォームがあります。ユーザーがボタンをクリックすると、form1がポップアップします。ユーザーが[OK]を押すと、2番目のポップアップが表示されます。ユーザーがもう一度[OK]をクリックすると、画面が消えます。または、ユーザーが[再試行]をクリックすると、画面が最初の画面に戻ります。2つの画面は完全に異なるサイズで、情報が異なります。
だから私はこのコードを思いついた:
私はこのコードをテストしましたが、それは魅力のように機能しているようです。このコードでは、SharedDataは、両方のフォームによって操作されるデータを含むオブジェクトです。2つのフォームを作成する前にこのオブジェクトを作成し、ModalResult == mrOKの場合は、データをデータベースに書き戻すだけです。
問題は、これは2つのフォーム間の反転を処理するためのクリーンなソリューションだと思いますが、このような構造を以前に見たことはありません。もちろん、私は天才です。(少なくとも、Egoは私にそう言っています。)しかし、このコードを使用することに反対する何かがあるのでしょうか、それとも問題ないのでしょうか。
delphi - TAnimate の Common AVI を Vista および Win7 で動作させるにはどうすればよいですか?
FindFile Common AVI を備えた TAnimate コントロールを持つ Delphi 2007 アプリケーションがあります。アプリケーションが Windows XP で実行されている場合は完全に機能しますが、Windows 7 では何も表示されません。独自のスレッドが必要になったと聞きましたが、確かではありません。
TAnimate の Common AVI コントロールを Windows 7 (または Vista) で動作させる方法を知っている人はいますか?
delphi - Delphi IDEで使用される.PASファイルを再コンパイルできますか?
エラーが常にプログラマーのせいであるというJeffAtwoodの記事はよく知っていますが、Delphiの.pasファイルにバグを本当に本当に見つけたと思います。
具体的には、Delphi 2007を使用していますが、エラーはDBCommon.pasファイルの955行目にあります。このファイルは、私のマシンでは次の場所にあります。
C:\ program files \ codegear \ rad studio \ 5.0 \ source \ Win32 \ db \ DBCommon.pas
そしてコードはこれです:
「Token」の値がゼロの場合、DataSet.Fieldsのインデックス-1にアクセスしようとすると、リストインデックスの範囲外エラーが発生します。
このエラーは、その高さになる前に処理されるため、ユーザーには発生しませんが、これが発生するたびにデバッガーが中断するのは非常に苛立たしいことです。
「この例外タイプを無視する」こともできますが、インデックスの範囲外エラーは十分に一般的であるため、普遍的に無視したくありません。
FieldIndexがゼロになる状況は、次のように、ORDERBYに関数が含まれているSELECTステートメントがある場合です。
DBCommon.pasのバグを修正できますが、Delphiはそれ自体を再コンパイルせず、変更は有効になりません。.DCUファイルの名前を変更すると、「DBCommon.dcu」が見つからないと文句を言うだけです。
だから(最後に)私の質問は:DBCommon.pasを自分の修正で再コンパイルできますか?もしそうなら、どのように?
asp.net - ASP.NET と Delphi 2007 for .NET。ファイルまたはアセンブリを読み込めませんでした … 見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません
これはヘッドスクラッチャーです。これが取引です。
Delphi 2007 for .NET でビルドされた ASP.NET アプリケーションのベータ コピーをテスト サーバーにデプロイしているときに、奇妙な問題に遭遇しました。使用していた ADO.NET データ プロバイダーの正しいバージョンを読み込めなかったため、アプリケーションを起動できませんでした。
古いアセンブリのバージョンを bin ディレクトリに含めることによってのみ、アプリケーションが実行されます。ただし、この古い .NET データ プロバイダーに縛られたくないので、この問題の解決策を見つけようと決心しています。
最初に、.net データ プロバイダ アセンブリをローカル コピーとして使用してプロジェクトをコンパイルしました。これにより、Delphi は、プロジェクト マネージャの参照フォルダに追加したときに選択したバージョンのアセンブリのコピーを使用する必要がありました。私が選択した実際のアセンブリはバージョン 9.10.2.0 で、アプリケーションと共に bin ディレクトリに表示されるアセンブリのバージョンです。ただし、実行時に、アプリケーションは同じアセンブリの以前のバージョンである 9.0.2.7 にバインドしようとしていました。
(実際には、この問題は GAC バージョンの Copy Local を使用しているかどうかに関係なく発生するため、問題ではないと思います。)
この問題を調査しているときに、新しいプロジェクトを作成し、9.10.2.0 アセンブリへの参照を追加しました。それでも、.NET 2.0 構成ユーティリティと Reflector の両方が、アプリケーションが 9.0.2.7 アセンブリへの参照を使用してコンパイルされたことを示しました。
GAC を調べると、9.0.2.7 と 9.10.2.0 の両方のバージョンが登録されていることがわかりました。9.0.2.7 バージョンを削除しようとすると失敗します。これは、そのバージョンのプロバイダーがまだ GAC 内のアセンブリを参照していたためです。
レジストリにアクセスし、9.0.2.7 プロバイダーへのすべての参照を手動で削除しました。その後、GACから削除できました。これは何も変わりませんでした。既存のアプリケーションからアセンブリを削除し、9.10.2.0 バージョンを追加してコンパイルすると、間違ったアセンブリ情報がアプリケーションに挿入されました。以前と同様に、9.0.2.7 への参照がまだ実行可能ファイルに挿入されていたため、9.10.2.0 アセンブリを参照する新しいアプリケーションを作成しても機能しませんでした。
Delphi ライブラリの検索パスを確認しました。また、古いアセンブリ ファイルのすべてのインスタンスをマシンから完全に削除しました (ASP.NET 一時ファイル ディレクトリからも削除しました)。私はまだ問題を抱えています。Issam Ali の AppManifest ユーティリティを使用してマニフェストを手動で調整しようとしましたが、Delphi 2007 for .NET では ASP.NET アプリケーションをサポートしていないようです。
そのため、GAC には 9.0.2.7 への参照が含まれなくなり、レジストリにそれへの参照がなくなり、プロジェクトまたは Delphi オプション ダイアログに古いプロバイダ ディレクトリへのパスがなくなり、古いプロバイダ アセンブリがファイル システムになくなります。 、および 9.0.2.7 はどのプロジェクト ファイルにも表示されません。また、web.config、machine.config、またはチェックした他のファイルにも表示されません。それにもかかわらず、9.10.2.0 バージョンのアセンブリを参照するときはいつでも、Delphi はこのバージョンのアセンブリを使用することを主張します。(はい、Delphi を再起動し、この開発を行っていた仮想マシンも再起動しました。)
9.10.2.0 データ プロバイダー (古いものは既にアンインストールされています) をアンインストールして再インストールした後でも、データ プロバイダーの参照をアプリケーションに追加すると、ランタイム アプリケーションが古いプロバイダーを読み込もうとします (古いプロバイダーへの参照がない場合でも)。明らかにシステムに残っています)。
他の解決策 (ここで言及する価値があります) を試しましたが、どれもうまくいきませんでした。誰かこれを見た?私はこの問題に引き続き取り組みますが、提案を聞きたいです。Delphi が古いアセンブリ情報をプロジェクトに挿入するのをやめさせることができません。
笑顔のために、失敗からのエラーログを含めています。このログは基本的に、フュージョン ログから取得した情報を複製したものです。このログは、GAC から 9.0.2.7 アセンブリを削除した後に作成した単純なアプリの 1 つからのものです。最初から古いバージョンのプロバイダーを探していることに注意してください。
アセンブリ マネージャーの読み込み元: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll 実行可能ファイル c:\windows\microsoft.net\framework\v2.0.50727\aspnet_wp.exe で実行 --- 詳細なエラーログが続きます。
=== バインド前の状態情報 === LOG: User = TRAINING8A\ASPNET LOG: DisplayName = Advantage.Data.Provider, Version=9.0.2.7, Culture=neutral, PublicKeyToken=e33137c86a38dc06 (完全指定) LOG: Appbase = file:///C:/Inetpub/wwwroot/TestAdsVer2/ LOG: Initial PrivatePath = C:\Inetpub\wwwroot\TestAdsVer2\bin
アセンブリの呼び出し: TestAdsVer2、バージョン = 1.0.3572.17384、カルチャ = ニュートラル、PublicKeyToken = null。
ログ: このバインドはデフォルトのロード コンテキストで開始されます。ログ: アプリケーション構成ファイルの使用: C:\Inetpub\wwwroot\TestAdsVer2\web.config ログ: ホスト構成ファイルの使用: c:\windows\microsoft.net\framework\v2.0.50727\aspnet.config ログ: マシン構成ファイルの使用c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config から。ログ: ポリシー後の参照: Advantage.Data.Provider、Version=9.0.2.7、Culture=neutral、PublicKeyToken=e33137c86a38dc06 ログ: 新しい URL ファイルのダウンロードを試行しています:///c:/WINDOWS/Microsoft.NET/Framework/v2 .0.50727/一時 ASP.NET ファイル/testadsver2/07545aea/3d068a5/Advantage.Data.Provider.DLL. ログ: 新しい URL ファイルのダウンロードを試みています:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/testadsver2/07545aea/3d068a5/Advantage.Data.Provider/Advantage.Data.Provider .DLL. ログ:新しい URL ファイルのダウンロードを試みています:///C:/Inetpub/wwwroot/TestAdsVer2/bin/Advantage.Data.Provider.DLL。WRN: アセンブリ名を比較すると、不一致が発生しました: マイナー バージョン ERR: アセンブリのセットアップを完了できませんでした (hr = 0x80131040)。調査終了
これはあまりにも長く続いたため、LanceSC の回答に追加したコメントが表示されなくなりました。しかし、これは私が対処したい興味深いアイテムです。
LanceSC への最後の 2 つのコメントは次のとおりです。
この動作を示したインストールは、機能しなくなった VM にあります。私が知っている別の開発者も、これと同じ問題を経験しました。解決策は、インストールを放棄することでした。この .NET データ プロバイダーの特定のバージョンのインストーラーに、問題を引き起こした奇妙なアーティファクトが残っているように感じます。このデータ プロバイダーの他のビルドでは発生しません。私はもはやこの質問に対する答えを求めていません。
話すのが早すぎた。私の同僚は、今日 (2010 年 3 月 5 日)、同じ .NET データ プロバイダーの少し前のバージョン (9.0.2.1) で同じエラーに遭遇しました。彼は今、私と同じ立場にいます。どのバージョンのデータ プロバイダーでもアプリケーションを実行することはできません。古いものを保存してください。そのアセンブリはローカル コピーとして使用されており、古いバージョンは gac にありません。彼のマシンを使用して、verbose オプションを指定して MSBuild を実行しました。ビルドはエラーなく正常に動作しました。それにもかかわらず、古いバージョンのプロバイダーが見つからなかったため、コンパイル アプリケーションは実行できませんでした。
概要
私の同僚は辞任して Delphi 2007 を再インストールしました (幸いなことに、彼は VM で作業していて、Delphi 2007 を使用する 2 つ目の VM を持っていましたが、問題の .NET データ プロバイダーは一度もインストールされていませんでした。これも私の戦術でした。
この時点で、この問題は解決できないという結論に達しました。それにもかかわらず、私はこの質問をもう 1 週間ほど開いたままにしておきます。今後数週間で実行可能な解決策が提案されない場合は、この質問を閉じます.
それまでの間、私は同僚に、提案された解決策や調査をテストするために、問題のあるプロバイダーで VM を保存するように依頼しました。
delphi - Delphi2007のCrystalレポート
私は持っています:
Delphi 2007
クリスタル11
CrystalVCLコンポーネントのDelphi7バージョン(私が知っている最新のものであり、D2007で正常にコンパイルされます)
Crystal 11で記述された非常に単純なテストCrystalレポートで、テーブルを画面にダンプするだけです(選択基準なし、数式なし、データのみ)
私は試した
新しいVCLフォームアプリを作成しました
TCrpeコンポーネントをフォームにドロップしました
「ReportName」プロパティをテストレポートに設定します。
フォームにボタンをドロップし、その後ろに1行配置しました。
レポートで[レポート付きデータの保存]オプションがオンになっている場合、これは正常に機能します。
そのオプションをオフにした場合、ログイン資格情報を提供する必要があります。
このコードの使用(100万年前のDelphi 5で正常に機能しました):
このエラーが発生します:
私は何が間違っているのですか?DelphiのCrystalVCLコンポーネントにログインクレデンシャルを提供するにはどうすればよいですか?私の現在の回避策はかなり醜いです、そして私は変換するためにたくさんのレガシーコードを持っています。VCLコンポーネントを簡単な方法で使用できれば本当に素晴らしいと思います。
delphi - Delphi 2007 および Logitech Webcam ドライバー
少し前に、Delphi 2007 で、logitech Webcam ドライバーの実行中にアプリを実行およびデバッグできないという問題がありました。
どうやら Logitech Driver は実行中のすべてのプロセスにスタブを挿入するため、デバッガーのオフセットが台無しになります。
1 年と少し経ちましたが、これはまだ問題ですか? Logitech は彼らの行為を片付けましたか、それともウェブカメラを別のブランドに捨てなければなりませんか?