问题标签 [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) 应用程序。应用程序文件是预编译的,安装程序是在 Visual Studio 中生成的。它是预编译的,因为它是用 Delphi Prism 编写的,而不是 C#。
测试时一切正常,但是一旦进入野外,我们就开始看到几个问题,例如
- 安装程序有时会拒绝安装,说应用程序已经安装,即使在安装构建器中设置了“删除以前的版本”选项。
- 安装程序似乎对 IIS 的设置非常敏感。例如,如果没有为 II7 安装 II6 兼容性,安装程序将退出且不显示错误消息。
- 尝试连接到应用程序时,一些用户得到“无法访问 IIS 元数据库”(仍然不知道这是什么)。
- 似乎没有办法在安装程序中创建应用程序池。因此,.NET 2.0 应用程序最终可以使用 .NET 3.5/4.0 的应用程序池。
这些只是我们遇到的一些问题。
有没有更好的方法来分发不需要提前了解最终用户系统的 ASP.NET 应用程序?我们可以做一些愚蠢的事情吗?如果这些是常见问题,是否有安装良好的万无一失的安装,如果出现问题,向用户提供信息丰富的错误消息。
multithreading - 如何传递或使公共变量或字段可供 Tthread 访问?
我正在使用 Delphi Prism 为 Mono 编写和构建我的软件。所以,我决定我的串行通信将由一个线程处理。由于除非您为项目启用全局变量选项,否则严格不允许使用全局变量,因此我决定遵循 Delphi Prism 约定。那么,如何传递或使公共变量或字段可供线程访问?
这是我的测试主窗体代码:
这是串行通信的线程:
以下是 ThreadComm 的运行方式:
每次我编译代码时,它都会引发 30 条左右类似的错误消息,说明如下:
没有实例引用就无法调用实例成员“SerialPort1”
我知道错误的含义,但解决它的唯一方法是创建主窗体的实例。如果你这样做,那么它将与主程序的实例不同。如果是这种情况,那么当您需要访问它的字段或公共变量时,您将不得不一直创建新的 mainform 实例。正确的?
我想使用所有这些变量都在线程中,并且它们恰好在主窗体公共区域内。
谢谢
datagridview - Delphi Prism 的 TStringGrid 的替代方案
由于我开始在 Delphi Prism 下开发,我注意到它没有任何类似于您通常在 Delphi 7 及以下版本中看到的 TStringGrid 工具的网格工具。尽管 Delphi Prism 有一个 DataGridView,但它并不适合我的目的。事实上,每次我尝试设置它并让它按照我们希望它在我们的软件中运行的方式运行时,它根本不起作用。据我了解,DataGridView 确实需要一个数据库源来显示数据。
所以,我想知道 Delphi Prism 的 Delphi TStringGrid 是否有任何替代品。
datagridview - 如何从 main.pas 访问 DataGridView?
我在不同的 winform 上有 DataGridView,我试图从 main.pas 访问 DataGridView,但我不能。
我收到以下错误:“MonoPro.UnitForm”在表达式“fr.dataGridView1”中不包含“dataGridView1”的定义
这是代码:
Form1.pas 与 UnitForm Winform 与 DataGridView
这是 Main.pas。我正在尝试从 Form1.pas (UnitForm) 访问 dataGridView1。
任何想法?
谢谢
winforms - 无法访问 Delphi Prism 中已处置的对象
我在 Delphi Prism 下为 Mono 编程。在打开已经打开和关闭的窗口窗体后,我不断收到此错误“无法访问已处理的对象”,即使窗口窗体是在类中声明并在构造函数中实例化如下。
这是声明它的类:
这是实例化或创建它的构造函数:
以下是在按钮事件中显示或打开表单的方式:
由于 fr 是一个窗口窗体,它是类的一部分,很像一个全局变量,为什么在打开它后关闭它时会释放窗口窗体。它不是一直保存在内存中,直到整个程序关闭以便于访问?
更新: 在 onFormClosing 中,我隐藏了表单并且它似乎可以工作,但是当我尝试再次重新打开表单时,它会引发与之前“无法访问已处置对象”相同的异常。
web-services - 什么是 webservice 以及如何在 Delphi Prism 中特别使用它们?
我正在开发 Delphi Prism 下的软件,并希望将程序的某些部分公开到 Internet 或 Intranet,专门用于移动设备或 PC 的远程访问。我可以使用网络服务来做到这一点吗?如果是这样,请让我大致了解如何去做。如果没有,你会使用什么或者你会选择如何完成这个?
您的意见将不胜感激。请尽可能彻底。谢谢你。
.net - Delphi Prism 中 TRect 和 TPoint 的替换
从 Delphi Win32 代码到 Delphi Prism 代码,你用什么替换 TRect 和 TPoint?
graphics - Delphi Prism 的图形或画布属性的替换
好的,而不是逐个询问,我将列出我遇到问题的 win32 程序中的所有画布属性。对于 Delphi Prism,你会用什么来代替这些?
reference - 你调用的对象是空的
关于 Delphi Prism,我可以肯定地说的一件事是它是片状的。如果您对程序进行了一些更改并一次一行地运行您的程序,那么您总是会遇到某种错误,即使您的程序可以编译和运行。
我所做的只是添加菜单项并添加它的事件,现在 Delphi Prism 编译器每次尝试打开主表单设计器时都会抱怨“对象引用未设置为对象的实例”。我什至看不到我的程序的主要 winform,但有以下信息。我想,如果我删除更改,错误就会消失,但事实并非如此。它似乎被困在上面。
错误消息并未指出程序或代码的何处或哪一部分出现问题,但程序可以完美编译和运行。唯一的问题是现在我无法打开主窗口表单设计器来对主 winform 进行任何更改。
问题是什么?请帮我!!!
更准确地说:我试图添加一个用户定义的对话框窗口,但在此过程中,我最终添加了一个新的 UserControl Window 项目作为项目树视图中的项目之一,而不包括 resx。从那时起,我的主窗口表单将不会在设计器中打开,它会显示上面发布的错误。但是,一切都编译并运行。如前所述,我无法在设计器中打开主窗口窗体。
这是 main.designer.pas 代码:
这是 Main.pas 表单代码:
.net - 全局窗口形式与。本地或私有窗口窗体
自从我开始为 .NET 阅读和使用各种语言编写程序以来,有人告诉我,您的程序中的任何内容的“全局”都是非常非常糟糕的。整个想法对我来说似乎没有任何意义。在过去的 10 到 13 年里,我一直是一名程序员/软件开发人员,我开始接受这样一个事实,即作为一名程序员,有时你不能只编写代码而不使用全局对象或变量。
全局变量或对象确实会导致程序中的错误,但这并不意味着它是由于编程语言或编译器本身,而是程序员本人。
就全局窗口表单而言,当您无法将表单实例作为参数传递时,您如何期望能够以编程方式从程序的其他部分更改“SAME”窗口表单属性? . 如果窗口窗体不是全局窗体,则每次程序需要显示或更改其属性时,都必须在本地实例化一个新窗体,但是新窗体将与您打开的第一个窗体不同。如果表单在 private、protected 或 public 部分下的类中声明,则需要实例化该类,然后需要实例化表单本身并在需要的地方传递。我相信你会在这样做时遇到其他一些编程问题。
我什至不知道他们为什么会改变 CLOSE 方法的真正定义。关闭意味着关闭而不是处置。
我并不是要贬低 Global 不好的整个想法。我只是想了解为什么以及以何种方式。
有人可以解释并给我一个示例,说明如何在没有单个“全球”窗口形式甚至变量的情况下完全编程?假设一个程序有两个窗口窗体。一个是主窗体,另一个窗体有一个 Ttimer 和一个标签。主窗体有一个 Tbutton 和单击事件,可打开第二个窗体。第二种形式 Timer 有一个 Tick 事件,每秒将当前日期和时间设置为其标签文本属性。当您单击 TButton 时,它应该打开第二个窗体并每秒显示当前日期和时间。现在向我展示我在 C# 或 Delphi XE 或 prism 或 C++ 或 VB 中描述的上述程序的代码,没有任何全局变量(S)。
谢谢,