我似乎无法想出这个.我的程序编译并成功运行,但在调试期间,只有在关闭程序时会弹出一个消息框,显示"无效的指针操作".我已经仔细检查了所有FormCloseQuery和FormDestory事件是否存在任何语法或逻辑错误.我发现没有,他们按预期执行没有任何错误.

当我告诉编译器在无效指针操作错误中断时,它没有做任何事情,只是挂起程序.此时,我不得不终止或终止该过程.
你是怎么想出来的?
提前致谢,
我正在Windows 7下的Delphi 2010 XE RAD Studio上开发Delphi应用程序.我的应用程序不停地在串口上进行讨论.我正在使用AsyncPro for Delphi 2010.串口通信和我开发的计算机上的所有其他工作都很好,没有任何问题.但是,当我的应用程序的发行版本在另一个Windows 7系统上运行时,串行通信完全失败.我们探测了串行通信本身的答案,发现在发送所有字节后不会丢弃请求发送(RTS)线,而在我的开发计算机上,RTS线被正确删除.
即使我明确地将RTS线丢弃到低或假状态,RTS线也不会立即下降,但是在15毫秒之后.因此,我的发布版本上的串行通信失败了.
我是否遗漏了有关Windows 7和串行通信问题的重要信息?
更新:我刚刚发现我的Aysncpro 5.0 for Delphi XE的错误.真奇怪.当我的Delphi XE IDE打开或运行时,我的程序正在完美地进行通信.当我的程序运行时关闭或关闭我的Delphi XE IDE时,相同的程序不能很好地通信或超时.
如果你知道它为什么会发生,请编钟.
任何帮助将不胜感激.
谢谢,
我试图通过简单地调用:在TListBox doubleclick事件中导致TButton Click事件:
Button1.Click;
Run Code Online (Sandbox Code Playgroud)
我总是能够在Delphi XE和它下面的版本下做到这一点,但现在它在Delphi Prism中引发错误.错误消息是"无法访问基础事件字段".那么,如何在TListBox实例的另一个控件事件中引发事件?
例如:
method UnitSelectDialog.UnitListBox_DoubleClick(sender: System.Object; e: System.EventArgs);
begin
Okbtn.Click;
end;
Run Code Online (Sandbox Code Playgroud)
上面的代码与单击表单上的OK Tbutton相同.
我有一个自定义对话框winform.在它上面我有一个标签,文本框和2个按钮(确定和取消).它还声明并定义了用于传递不同参数列表的重载执行方法.
Dialog Winform的调用方式如下:
var theDialog := new InputMsgBox;
if theInputB.Execute('Awesome StackOverflow','Enter Text?',s,var s) = DialogResult.OK then
begin
Invalidate;
SetText(s);
end;
Run Code Online (Sandbox Code Playgroud)
Dialog Winform执行定义如下:
method InputMsgBox.Execute(Title, theMessage, defaultanswer:string;var thevalue:string): DialogResult;
begin
result := DialogResult.Cancel;
Requesttext.Text:=themessage;
Requesttext.Enabled:=true;
Requesttext.Visible:=true;
InputTextBox.Text:=defaultanswer;
InputTextBox.Enabled:=true;
InputTextBox.Visible:=true;
CancelBtn.Enabled:=true;
CancelBtn.Visible:=true;
Okbtn.Enabled:=true;
Okbtn.Visible:=true;
self.ShowDialog;
Result := self.DialogResult;
thevalue:=InputTextBox.Text;
end;
Run Code Online (Sandbox Code Playgroud)
当execute方法返回给调用者时,即使单击OKBtn,它也总是返回DialogResult.Cancel.
按钮的对话框相应地设置.
我在Dialog winform上设置了AcceptButton和CancelButton.
我无法弄清楚为什么showdialog方法总是返回DialogResult.Cancel.
更新完成一些测试后,我发现通过调用showdialog = DialogResult.Ok显示我的其他自定义对话框窗口工作正常.所以,我检查了它们两个以查看它们的属性设置是否存在一些差异,并且绝对没有区别.我不明白.提前致谢,
在我的所有编程生涯中,我从未真正有机会使用Microsoft ActiveX做任何事情.所以,我很少知道它是什么或它用于什么.虽然我在互联网上搜索了答案,但我发现ActiveX或ActiveX容器有很多不同的定义.我的一个客户是为我的软件要求ActiveX容器,我没有.他希望通过此ActiveX容器远程查看或控制我的软件.这可能吗?还有,ActiveX还在吗?我试图看看我是否可以快速地使用这个ActiveX容器供他使用.
我假设ActiveX用于将您的软件的某些部分暴露给Internet或Intranet.因此,用户可以远程访问您的应用程序.
任何回复将不胜感激.谢谢,
在花了一周的时间检查并通过FastMM4修复我的程序内存泄漏之后,我终于测试了在不同的PC上运行我的程序.现在,我得到"范围检查错误".我花了几个小时在网上研究这个,但他们似乎都没有给我我想要的东西.我的程序符合运行时错误选项范围检查.所以,我知道这就是我收到错误的原因,但我需要确切地知道错误的原因.
该程序是使用Delphi 7.0在XP上编译的.测试PC是Windows 7.一旦启动,我的程序就开始通过串口进行通信,然后是"Range Check Error"消息框.当我停止串行通信时,没有"范围检查错误"框.这是什么意思,我该如何解决它?我正在寻找简单的策略.我知道我可以花几天时间逐行检查.
由于值的分配不正确或访问数组的不可访问的索引而导致的"范围检查错误".我对么?
我有两个类 - 基类和继承类如下.
基类:
TAlarm = class(System.Object)
private:
protected:
public:
constructor (tag:TTagname);
end;
Run Code Online (Sandbox Code Playgroud)
继承类:
TAlarmMsg = class(TAlarm)
public
constructor (aname:string);
method GetAlarmMsg:string; override;
method SendMsg(msg:string);
end;
Run Code Online (Sandbox Code Playgroud)
构造函数:
constructor TAlarm(tag:TTagname);
begin
Tagname := tag;
end;
constructor TAlarmMsg(aname:string);
begin
inherited TAlarm(aname); <========Here is my problem.
name := aname.ToCharArray;
end;
Run Code Online (Sandbox Code Playgroud)
无论我使用继承的构造函数调用什么或怎么调用,我在编译源文件时都会收到以下错误消息.
- 在继承的构造函数完成之前无法访问Self.和/或 - 在基类中找不到合适的构造函数,因此需要手动调用inherited
顺便说一下,我花了半天时间研究这个问题,并在网上找到了很好的信息.到目前为止没有任何帮助.我甚至在Delphi Prism Wikipedia(http://prismwiki.embarcadero.com/en/Constructors)上找到了直接讨论构造函数的网页.
那么,你会如何正确地做到这一点?谢谢,
好的.好吧,我知道这个问题很有可能在前10分钟内被关闭,但我还是会问它,因为我花了将近一天半的时间试图寻找解决方案.不过,我无法想出这个.虽然他们有演示,但即使在HASP(safenet)网站上也没有太多关于此的信息.
我有一个HASP HL USB加密狗.我尝试转换他们的演示和测试运行它,但对于我的生活我甚至无法让它登录甚至.它不断提高Aladdin.HASP.HaspStatus.HaspDotNetDllBroken异常.
但是,如果我运行他们演示的C版本,它可以很好地工作.
这是我的代码的Csharp版本:
Aladdin.HASP;
HASP myHasp = new HASP();
var thestatus = myHasp.Login(vender_code);
myHasp.Logout;
Run Code Online (Sandbox Code Playgroud)
我想登录USB HASP并在其内存中获取其HaspID和设置.
提前致谢,
我创建了一个测试程序,它应该在linux(PCLinuxOS)下反复地来回更改面板的背景颜色,但它并没有真正起作用.要么它只更新面板的背景颜色只有当你点击某个东西或鼠标悬停在winform上然后它停止或程序在运行一段时间后完全崩溃.
以下是2个面板,一个按钮和一个计时器的winform外观:

这是它背后的代码:
namespace TestIndicator;
interface
uses
System.Drawing,
System.Collections,
System.Collections.Generic,
System.Windows.Forms,
System.ComponentModel;
type
/// <summary>
/// Summary description for MainForm.
/// </summary>
MainForm = partial class(System.Windows.Forms.Form)
private
method d_Click(sender: System.Object; e: System.EventArgs);
method timer1_Tick(sender: System.Object; e: System.EventArgs);
protected
method Dispose(disposing: Boolean); override;
public
constructor;
end;
var
TurnOnRx, TurnOnTx:Boolean;
implementation
{$REGION Construction and Disposition}
constructor MainForm;
begin
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
TurnOnRx := true; …Run Code Online (Sandbox Code Playgroud) 我目前正在探索在我的程序中使用 MQTT 协议的可能性,系统发现有几个不同的 MQTT Brokers。所以,我的问题是,您可以混合搭配经纪人来进行这种沟通吗?例如,设备 1 上的 Mosquitto 代理和设备 2 上的 ActiveMQ Broker。这有效吗?
delphi ×5
.net ×3
delphi-prism ×3
exception ×2
activex ×1
backcolor ×1
c# ×1
class ×1
constructor ×1
containers ×1
debugging ×1
delphi-xe ×1
dialog ×1
dialogresult ×1
events ×1
hasp ×1
inherited ×1
intranet ×1
iot ×1
linux ×1
listbox ×1
mono ×1
mqtt ×1
protocols ×1
range ×1
return-value ×1
serial-port ×1
usb ×1
windows-7 ×1
winforms ×1