問題タブ [delphi-prism-2010]
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 Prism がシステム タイプの不一致について文句を言うのはなぜですか?
Delphi Prism 2010 で、解決できない奇妙なコンパイラ エラーが発生しました。エラーは、特殊な画像形式を操作するサードパーティ アセンブリで定義されたオブジェクトのメソッドを呼び出すことです。アセンブリ自体は、.Net 2.0 ランタイムに対してコンパイルされました。
パラメーターの正しいリストを提供しているにもかかわらず、パラメーター リストが正しくないことを示すエラーと一連の警告メッセージが常に表示されます。VS 2008 IDE もパラメーター補完の実行を拒否しますが、メソッド プロトタイプを正しく表示し、Ctrl-Space を使用してメソッドを追加できるようにします。以下は、問題を説明するためのコンパイラ エラーの簡略版です。
エラー 1 (PE19) これらのパラメーターを持つオーバーロードされたメソッド "GetTempMapOfIRSensor" はありません
警告 2 (PH2) 最も一致する "Image.GetTempMapOfIRSensor(var rectOnSensor: System.Drawing.Rectangle; out average: System.Double; out minTempArrayIndex: System.Int32; out maxTempArrayIndex: System.Int32; desiredTempUnits: Image.TEMP_UNIT): array of System.Double" がパラメーター 1 で一致しません。パラメーターは "System.Drawing.Rectangle" であり、"System.Drawing.Rectangle" である必要があります。
警告 3 (PH2) 最も一致する "Image.GetTempMapOfIRSensor(var rectOnSensor: System.Drawing.Rectangle; out average: System.Double; out minTempArrayIndex: System.Int32; out maxTempArrayIndex: System.Int32; desiredTempUnits: Fluke.Thermography.TEMP_UNIT) : System.Double の配列がパラメーター 2 で一致しません。パラメーターは「System.Double」であり、「System.Double」である必要があります。
....残りの各パラメーターに対する同様の警告のリスト
奇妙な部分は、コンパイラがすべてのパラメーターの型の不一致について不平を言うことですが、エラーメッセージはパラメーターの型名が同じであることを示しています (たとえば、パラメーターは "System.Double" は "System.Double" である必要があります)。
この問題のトラブルシューティングと解決方法に関する提案は大歓迎です。問題のクラスは、この 1 つのメソッドを除いて、他のすべての点でうまく機能しているようです。同じ署名でローカル クラスにメソッドを作成し、エラーなしで呼び出すこともできます。
アップデート:
リフレクションと同じパラメーター リストを使用してメソッドを呼び出すと、正しく機能します。これは、ある種のコンパイラのバグ/制限であると思われます。
pascal - Delphi プリズムが必要な理由
Visual Studio の代わりに Delphi Prism を使用する必要性は何ですか? 私はデルフィ プログラマーなので、オブジェクト パスカルが好きですが、デルフィ プリズムが持っていて他にはないものは他にありますか?
.net - ウィンドウフォームを開くには?
私は Delphi Prism でのプログラミングを学んでおり、クラッシュ コースのチュートリアルを受講しました。これは素晴らしいと思いました。多くのことを学びましたが、すべてのウィンドウ ベースのプログラミング言語でプログラマーが実行できる非常に重要なプログラミング テクニックを 1 つ示すことができませんでした。これは、ボタンをクリックして Form1.Show; というコマンドを実行するウィンドウを開くように、別のウィンドウ内からウィンドウを開くことです。
私はそれを試しましたが、何も起こりません。私は何を間違っていますか、またはどのようにそれを行いますか?
ありがとう、
.net - ASP.NET とウィンドウ フォーム アプリケーション
私は Dot NET 環境の初心者であり、これまで Dot NET を読んだり行ったりしたことから満足していません。
ウィンドウ フォーム アプリケーションで ASP.NET を利用するプログラムを移行または作成する必要があります。なんらかの理由で、このプログラムを単一のプロジェクトとして作成することはできません。Dot NET とは何かを理解していないのでしょうか、それとも Dot NET がどのように設計されているのでしょうか?
Visual Studio 2010 に基づく Delphi Prism(DP) を使用しています。DP では、ASP.NET および/または Windows フォーム アプリケーション用に個別のプロジェクトしか作成できません。単一のプロジェクトで両方の世界を少しずつ使用することはできないようです。それを行うことさえ可能ですか?
私の Delphi Prism Dot NET プログラムは、一部がウィンドウ ベースで、一部が Web ベースであるはずです。ウィンドウベースのプログラムとして、シリアルポートとネットワーク上でデータを送受信することになっています。Webベースとして、インターネットまたはLANまたはイントラネット上のプログラムのウィンドウベース(サーバー側)へのアクセスをユーザーに提供することになっています。
私はすべてのデモを実行し、オンラインでヘルプを検索しました。それでも、私はそれで苦労しています。
私はイライラしています。Dot NET でのプログラミングは簡単だと思っていましたが、問題が発生しています。Dot NET が Microsoft であることを考えると、これはもうわかっているはずです。
Dot NET をもう少しよく理解するためのヒントや詳細情報を誰かに教えていただければ幸いです。ありがとうございました。
linux - LINUX でのシリアル通信 (RS232)
私は現在、Mono 開発のために Delphi Prism を使用しています。したがって、ソフトウェアはクロスプラットフォームであり、主に Linux OS で実行できます。はじめに、ソフトウェアの基本機能であるシリアル通信とネットワーク通信を実装して実行をテストしました。
しかし、Mono のシリアル通信の実装を渡すことができないようです。インターネットやStackoverflowで検索したところ、Linux環境に対応したライブラリや.NETフレームワークはないようです。Stackoverflow で他の人から尋ねられた同様の質問がいくつかありますが、回答は実際にはサンプルを示していません。私はちょっと立ち往生しています。
これは、Mono シリアル通信用に書いたコードです。この1つのWebサイトにアクセスした後。
しかし、Linux でこのコードを実行するたびに、Mono は「要求された機能は実装されていません」というメッセージ ボックスを表示します。理由がわかりません。これはMonoでも可能ですか?
RS232 通信用に Linux のシリアル ポートにアクセスする必要があります。
ありがとう、
datagridview - main.pasからDataGridViewにアクセスする方法は?
別のWinFormにDataGridViewがあり、main.pasからDataGridViewにアクセスしようとしていますが、アクセスできません。
次のエラーが発生します:「MonoPro.UnitForm」には、式「fr.dataGridView1」の「dataGridView1」の定義が含まれていません
コードは次のとおりです。
Form1.pasとUnitFormWinformとDataGridView
これがMain.pasです。Form1.pas(UnitForm)からdataGridView1にアクセスしようとしています。
何か案が?
ありがとう
serial-port - RTS 回線を自動的に切り替える (Delphi Prism SerialPort)
Delphi Prism で SerialPort を使用しています。SerialPort にバイトを送信することはできますが、SerialPort Request to Send (RTS) ラインが常にハイまたはアップしているため、外部からデータを受信できません。では、RTS ラインを自動的に切り替えるには、どの設定を設定しますか?
私が設定したシリアルポートのプロパティは次のとおりです。
DTRをセットしています。Request to Send 行は、シリアルにデータを読み書きするタイミングを制御する方法です。RTS が高い場合は書き込みしかできず、RTS が低い場合は読み取りしかできません。オシロスコープで通信回線を確認しましたが、RTS 回線は常に高い状態です。これは、プログラムがバイトしか送信できず、外部からバイトやデータを読み取ることができないことを意味します。これが、DataReceived イベントが実行されない主な理由です。これは、着信バイトまたはデータがまったく表示されないためです。
それで、私のシリアルポートの設定を見て、何が欠けているのか教えていただけますか。
delphi-prism - Delphi Prism - TObjectExtender が「拡張」している実際のクラスを特定するにはどうすればよいですか
Delphi コード全体で大量のログを記録していますが、現在実行中のコードを含むクラスの名前を記録するために Self.ClassName を使用することがよくあります。
現在、このコードの一部を Delphi Prism .NET アセンブリにコンパイルしています。
ただし、Delphi Prism では、Self.ClassName は実際のクラス名ではなく「TObjectExtender」を返すようになりました。
例えば
出力
Delphi XEII でコンパイルした場合、VS 2010 の出力で Delphi Prism でコンパイルした場合
実行中のコードを含む実際のクラスに関係なく。
Delphi Prismで実際のクラス名を取得する方法を誰か提案できますか?