我有这些课程和程序:
TParent = class(TObject);
TChild1 = class(TParent);
TChild2 = class(TParent);
Procedure DoSomething(obj:TParent);
Run Code Online (Sandbox Code Playgroud)
我想做的是什么时候obj
,TParent
而不是后代提出异常.
我想过做这样的事情:
if obj.classname = TParent.classname then raise exception.create....
Run Code Online (Sandbox Code Playgroud)
但似乎有点hackish(TM)
更多:我的意图是能够传递共享属性/过程的对象.经过深思熟虑后,根本不需要TParent Object,我需要的是我的答案中显示的接口对象.
我相信这将是一个简单的,但有一个项目,作为一个测试开始.
创建时它保存为"Project2.dpr"
现在测试不再是'测试',我想将项目名称更改为更有意义的东西.
什么是最好的方法呢?
只是将文件名和程序行更改为新名称的任何问题?即
meaningful.dpr
Program meaningful;
Run Code Online (Sandbox Code Playgroud)
注意:Delphi 7是否重要
任何人都知道delphi中的一种方式获得本地ip地址的简单列表(例如tstrings).
我已经看过另一个相关的问题了,似乎无法将它们转换为delphi.
是
OutputDebugString(PAnsiChar(''));
Run Code Online (Sandbox Code Playgroud)
线程安全?
我/我们一直在线程中使用它来进行调试,如果我以不同的方式做这件事我就不会想到它.
(德尔福7)
在我们的主数据输入屏幕上,我们在OnBeforePost事件中有一个OK/Cancel对话框.
Dataset.Cancel;
这意味着什么,回滚任何更改并将数据集置于浏览模式.
这对大多数客户来说都很好,但我们被问到是否可以更改为
如果他们想要取消,他们可以使用取消按钮.
查看源代码procedure TDataSet.Post;
看起来不可能以这种方式使用事件.
任何人都有任何想法可以这样做吗?
跟进:这就是我现在选择处理它的方式
case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
mrYes: ;
mrNo: Dataset.Cancel;
mrAbort: Abort;
mrNone: Abort;
end;
Run Code Online (Sandbox Code Playgroud) 我试着编写一个服务器/服务,在局域网上传播消息的时间大约是一秒钟,有点像服务发现.
该消息需要由可能位于同一台计算机或不同计算机上的多个客户端程序接收.但是每台机器上可能同时运行多个程序.
我使用delphi7,indy 9.0.18
如果我应该使用UDP(TIdUDPClient/Server)或IP MultiCast(TIdIPMCastClient/Server)或者如果它甚至可能...
我设法让它与IP Multi Cast一起使用每台机器一个客户端,但即使经过多次使用不同的绑定..最大/最小端口等,我似乎无法找到解决方案.
有没有办法强制Delphi编译器一直显示所有提示和警告?
以下是我目前在Delphi 6中看到的行为:
所以,我想也许我可以通过删除所有dcu
文件来强制Delphi 重新编译所有内容来欺骗Delphi .没运气.实际上,编译器会重新编译所有单元,但不会显示这些单元的提示和警告.
编辑:执行完整构建(项目>构建)会产生相同的不幸结果.
新信息:如果我修改一个单元然后编译,我会收到警告.但是,如果我修改一个单元然后修改,我就不会收到警告.我认为这指向警告在某处被关闭.可能在第三方图书馆?
似乎应该有一种方法要求Delphi重新显示所有这些提示和警告,这些提示和警告不要求我从源代码控制中检出新副本或逐个修改每个单元.
我使用TClientSocket或indy的TIdTCPClient(取决于项目)
我有几个Threads每个处理项目,有时需要通过连接的客户端套接字发送数据.(数据读取形式的套接字不用于处理线程)
基本上我的问题是......
或者我应该
delphi-7 indy-9
如果路径中没有一些运行时包,我的Delphi7项目将无法在我的客户端计算机上运行.例如rtl70.bpl
我有Build未运行的运行时包,所以它们不应该被编译到exe中吗?
编辑:项目使用Jedi包(TJvPlugin)并运行程序没有安装任何插件工作正常.在我添加插件后,bpl未找到的错误重新出现.好像不得不忍受额外的包裹.
我在主窗体上有几个TPanel,我根据用户选择的选项显示/隐藏.问题是,在设计时我必须经常移动它们来编辑它们.是否有其他人处理这种情况的更容易/更好的方式?