問題タブ [delphi-prism]
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.
.net - ASP.NETアプリケーションの配布
最近、ASP.NET(.NET 2.0)アプリケーションをリリースしました。アプリケーションファイルはプリコンパイルされており、インストーラーはVisualStudioで生成されます。C#ではなくDelphi Prismで記述されているため、プリコンパイルされています。
テスト中はすべてうまくいきましたが、実際に使用すると、いくつかの問題が発生し始めました。
- インストールビルダーで[以前のバージョンを削除]オプションが設定されていても、インストーラーがアプリケーションが既にインストールされていると言ってインストールを拒否することがあります。
- インストーラーはIISのセットアップに非常に敏感なようです。たとえば、II6互換性がII7にインストールされていない場合、インストーラはエラーメッセージなしで終了します。
- アプリに接続しようとすると、一部のユーザーは「IISメタベースへのアクセスに失敗しました」と表示されます(これが何であるかはまだわかりません)。
- インストーラーでアプリプールを作成する方法はないようです。したがって、.NET 2.0アプリケーションは、.NET 3.5/4.0を使用するアプリプールになる可能性があります。
これらは私たちが遭遇した問題のほんの一部です。
エンドユーザーのシステムに関する事前の知識を必要としないASP.NETアプリケーションを配布するためのより良い方法はありますか?私たちは愚かなことをしているのでしょうか?これらが一般的な問題である場合、適切にインストールされ、問題が発生した場合にユーザーに有益なエラーメッセージを提供する確実なインストールはありますか。
multithreading - パブリック変数またはフィールドをTthreadに渡すか、アクセス可能にする方法は?
私はDelphiPrismを使用してMono用のソフトウェアを作成および構築しています。そこで、シリアル通信はスレッドで処理することにしました。プロジェクトのグローバル変数オプションを有効にしない限り、グローバル変数は厳密には許可されないため、DelphiPrismの規則に従うことにしました。では、どのようにしてパブリック変数またはフィールドをスレッドに渡したり、アクセス可能にしたりしますか?
これが私のテストメインフォームコードです:
シリアル通信のスレッドは次のとおりです。
ThreadCommの実行方法は次のとおりです。
コードをコンパイルするたびに、次のような30個程度の同様のエラーメッセージが表示されます。
インスタンス参照なしでインスタンスメンバー「SerialPort1」を呼び出すことはできません
エラーの意味はわかっていますが、それを解決する唯一の方法は、メインフォームのインスタンスを作成することです。これを行うと、メインプログラムのインスタンスと同じインスタンスにはなりません。この場合、フィールドまたはパブリック変数にアクセスする必要があるときは、常にmainformの新しいインスタンスを作成する必要があります。右?
それらすべてを使用したいのですが、変数はスレッド内にあり、たまたまメインフォームのパブリックエリア内にあります。
ありがとう
datagridview - DelphiPrismのTStringGridの代替案
Delphi Prismで開発を始めたので、Delphi7以下で通常見られるTStringGridツールに似たグリッドツールがないことに気づきました。Delphi PrismにはDataGridViewがありますが、私の目的には簡単には役立ちません。実際、私がそれをセットアップして、ソフトウェアで希望どおりに機能させるようにしようとするたびに、それはまったく機能しません。私が理解していることから、DataGridViewはデータベースソースにデータを表示することを本当に望んでいます。
ですから、DelphiPrism用のDelphiTStringGridに代わるものがあるかどうかを知りたいと思います。
datagridview - main.pasからDataGridViewにアクセスする方法は?
別のWinFormにDataGridViewがあり、main.pasからDataGridViewにアクセスしようとしていますが、アクセスできません。
次のエラーが発生します:「MonoPro.UnitForm」には、式「fr.dataGridView1」の「dataGridView1」の定義が含まれていません
コードは次のとおりです。
Form1.pasとUnitFormWinformとDataGridView
これがMain.pasです。Form1.pas(UnitForm)からdataGridView1にアクセスしようとしています。
何か案が?
ありがとう
winforms - DelphiPrismで破棄されたオブジェクトにアクセスできません
私はDelphiPrismforMonoでプログラミングしています。ウィンドウフォームがクラス内で宣言され、次のようにコンストラクターでインスタンス化されているにもかかわらず、既に開いているウィンドウフォームと閉じているウィンドウフォームを開いた後、このエラー「破棄されたオブジェクトにアクセスできません」が表示され続けます。
宣言されているクラスは次のとおりです。
インスタンス化または作成されるコンストラクターは次のとおりです。
ボタンイベント内でフォームが表示または開かれる方法は次のとおりです。
frはグローバル変数によく似たクラスの一部であるウィンドウフォームであるため、ウィンドウフォームを開いた後に閉じるとウィンドウフォームが破棄されるのはなぜですか。簡単にアクセスできるようにプログラム全体がシャットダウンされるまで、メモリに保持されませんか?
更新: onFormClosing内で、フォームを非表示にして機能しているように見えますが、フォームを再度開こうとすると、以前と同じ例外が発生します。「破棄されたオブジェクトにアクセスできません」。
web-services - Web サービスとは何ですか?また、特に Delphi Prism でそれらを使用する方法は?
私は Delphi Prism でソフトウェアを開発しており、特にモバイル デバイスまたは PC のリモート アクセスのために、プログラムの一部をインターネットまたはイントラネットに公開したいと考えています。Webサービスを使用してそれを行うことはできますか? もしそうなら、それを行う方法の一般的なアイデアを教えてください。そうでない場合、これを達成するために何を使用しますか、またはどのように選択しますか?
ご意見をお待ちしております。できるだけ徹底してください。ありがとうございました。
.net - Delphi Prism の TRect と TPoint の置き換え
TRect と TPoint を Delphi Win32 コードから Delphi Prism コードに置き換えるにはどうすればよいですか?
graphics - DelphiPrismのグラフィックまたはキャンバスプロパティの置き換え
さて、少しずつ尋ねる代わりに、私が問題を抱えているwin32プログラムからのすべてのキャンバスプロパティをリストします。Delphi Prismの場合、これらを何に置き換えますか?
reference - オブジェクト参照がオブジェクト インスタンスに設定されていません
Delphi Prism についてはっきり言えることの 1 つは、不安定だということです。何らかの変更を加えてプログラムを 1 行ずつ処理していると、プログラムがコンパイルおよび実行されているにもかかわらず、どういうわけか常に何らかのエラーが発生します。
メニュー項目を追加してそのイベントを追加しただけで、Delphi Prism コンパイラは、メイン フォーム デザイナーを開こうとするたびに「オブジェクト参照がオブジェクトのインスタンスに設定されていません」と不平を言っています。プログラムのメインのwinformを見ることさえできませんが、次の情報があります。変更を削除するとエラーは解消されると思いましたが、そうではありません。それに引っかかっているようです。
エラー メッセージは、プログラムまたはコードのどこに、どの部分に問題があるかを示すものではありませんが、プログラムは問題なくコンパイルおよび実行されます。唯一のことは、メイン ウィンドウ フォーム デザイナーを開いてメイン ウィンドウ フォームに変更を加えることができないことです。
何が問題ですか?私を助けてください!!!
より正確に言うと、ユーザー定義のダイアログ ウィンドウを追加しようとしていましたが、その過程で、resx を含めずにプロジェクト ツリービューの項目の 1 つとして UserControl Window の新しい項目を追加することになりました。それ以降、私のメイン ウィンドウ フォームはデザイナーで開かれず、上記のエラーが表示されます。ただし、すべてがコンパイルされて実行されます。前に述べたように、デザイナーでメイン ウィンドウ フォームを開くことができません。
main.designer.pas コードは次のとおりです。
Main.pas フォーム コードは次のとおりです。
.net - グローバルウィンドウフォームと ローカルまたはプライベートウィンドウフォーム
.NET用にさまざまな言語で読み上げてプログラミングを始めて以来、プログラム内の「グローバル」は非常に悪いと言われています。その全体の考えは私にはまったく意味をなさないようです。過去10〜13年間プログラマー/ソフトウェア開発者であった私は、プログラマーとしてのあなたがグローバルオブジェクトまたは変数を使用せずにコーディングすることができない場合があるという事実を受け入れるようになりました。
グローバル変数またはオブジェクトがプログラムのバグにつながる可能性があることは事実ですが、それはプログラミング言語またはコンパイラ自体によるものではなく、プログラマ自身によるものであることを意味します。
グローバルウィンドウフォームに関する限り、フォームのインスタンスをパラメーターとして渡すことができない場合、イベント内でプログラムの他の部分から「SAME」ウィンドウフォームのプロパティをプログラムで変更できるとどのように期待しますか。 。ウィンドウフォームがグローバルでない場合、プログラムがそのプロパティを表示または変更する必要があるたびに、新しいフォームをローカルでインスタンス化する必要がありますが、新しいフォームは最初に開いたフォームと同じにはなりません。フォームがprivate、protected、またはpublicセクションのクラス内で宣言されている場合は、クラスをインスタンス化する必要があります。次に、フォーム自体をインスタンス化して、必要な場所に渡す必要があります。そうすることで、他のプログラミングの問題に遭遇すると確信しています。
なぜ彼らがCLOSEメソッドの本当の定義を変えるのかさえ私にはわかりません。クローズとは、破棄せずにクローズすることを意味します。
私はグローバルが悪いという考え全体を否定しようとはしていません。なぜ、どのように理解しようとしているだけです。
誰かが説明して、単一の「グローバル」ウィンドウフォームや変数さえも使わずに完全にプログラムする方法の例を教えてもらえますか?プログラムに2つのウィンドウ形式があるとしましょう。1つはメインフォームで、もう1つはTtimerとラベルがあります。メインフォームには、2番目のフォームを開くTbuttonおよびclickイベントがあります。2番目の形式のタイマーには、現在の日付と時刻をそのラベルテキストプロパティに毎秒設定するTickイベントがあります。TButtonをクリックすると、2番目のフォームが開き、現在の日付と時刻が1秒ごとに表示されます。次に、C#、Delphi XE、プリズム、C ++、VBで説明した上記のプログラムのコードを、グローバル変数なしで表示します。
ありがとう、