小编Chr*_*ase的帖子

如何确定Delphi对象是否属于特定类而不是任何后代类?

我有这些课程和程序:

 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,我需要的是我的答案中显示的接口对象.

delphi class-design

18
推荐指数
4
解决办法
2万
查看次数

安全(st)方式重命名delphi项目

我相信这将是一个简单的,但有一个项目,作为一个测试开始.
创建时它保存为"Project2.dpr"

现在测试不再是'测试',我想将项目名称更改为更有意义的东西.

什么是最好的方法呢?

只是将文件名和程序行更改为新名称的任何问题?即

meaningful.dpr

Program meaningful;   
Run Code Online (Sandbox Code Playgroud)

注意:Delphi 7是否重要

delphi delphi-7

17
推荐指数
2
解决办法
8774
查看次数

Delphi,如何获取所有本地IP?

任何人都知道delphi中的一种方式获得本地ip地址的简单列表(例如tstrings).

我已经看过另一个相关的问题了,似乎无法将它们转换为delphi.

delphi ip winsock

17
推荐指数
3
解决办法
2万
查看次数

在Delphi中,OutputDebugString线程安全吗?

OutputDebugString(PAnsiChar(''));
Run Code Online (Sandbox Code Playgroud)

线程安全?

我/我们一直在线程中使用它来进行调试,如果我以不同的方式做这件事我就不会想到它.

(德尔福7)

delphi multithreading delphi-7 outputdebugstring

16
推荐指数
2
解决办法
2489
查看次数

Delphi:在OnBeforePost事件中取消TDataSet.Post

在我们的主数据输入屏幕上,我们在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)

delphi delphi-7 tdataset

15
推荐指数
1
解决办法
1万
查看次数

MultiCast消息到同一台机器上的多个客户端

我试着编写一个服务器/服务,在局域网上传播消息的时间大约是一秒钟,有点像服务发现.

该消息需要由可能位于同一台计算机或不同计算机上的多个客户端程序接收.但是每台机器上可能同时运行多个程序.

我使用delphi7,indy 9.0.18

如果我应该使用UDP(TIdUDPClient/Server)或IP MultiCast(TIdIPMCastClient/Server)或者如果它甚至可能...

我设法让它与IP Multi Cast一起使用每台机器一个客户端,但即使经过多次使用不同的绑定..最大/最小端口等,我似乎无法找到解决方案.

delphi multicast indy delphi-7 indy-9

10
推荐指数
2
解决办法
9354
查看次数

如何强制Delphi编译器显示所有提示和警告

有没有办法强制Delphi编译器一直显示所有提示和警告?

以下是我目前在Delphi 6中看到的行为:

  1. 从源代码管理中查看我的应用程序的新副本
  2. 在Delphi和Compile中打开项目
  3. 显示项目的所有提示和警告
  4. 在一个单位进行更改
  5. 仅显示已更改单元的提示和警告

所以,我想也许我可以通过删除所有dcu文件来强制Delphi 重新编译所有内容来欺骗Delphi .没运气.实际上,编译器会重新编译所有单元,但不会显示这些单元的提示和警告.

编辑:执行完整构建(项目>构建)会产生相同的不幸结果.

新信息:如果我修改一个单元然后编译,我会收到警告.但是,如果我修改一个单元然后修改,我就不会收到警告.我认为这指向警告在某处被关闭.可能在第三方图书馆?

似乎应该有一种方法要求Delphi重新显示所有这些提示和警告,这些提示和警告不要求我从源代码控制中检出新副本或逐个修改每个单元.

delphi compiler-construction warnings hints delphi-6

9
推荐指数
2
解决办法
3802
查看次数

线程可以共享同一个客户端套接字吗?

我使用TClientSocket或indy的TIdTCPClient(取决于项目)

我有几个Threads每个处理项目,有时需要通过连接的客户端套接字发送数据.(数据读取形式的套接字不用于处理线程)

基本上我的问题是......

  • 有可能吗?
  • 它"安全"吗?

或者我应该

  • 每个线程或一个客户端套接字
  • 某些编组/关键部分

delphi-7 indy-9

sockets delphi multithreading delphi-7

7
推荐指数
1
解决办法
2188
查看次数

Delphi项目需要运行时包,即使关闭运行时包

如果路径中没有一些运行时包,我的Delphi7项目将无法在我的客户端计算机上运行.例如rtl70.bpl

我有Build未运行的运行时包,所以它们不应该被编译到exe中吗?

编辑:项目使用Jedi包(TJvPlugin)并运行程序没有安装任何插件工作正常.在我添加插件后,bpl未找到的错误重新出现.好像不得不忍受额外的包裹.

delphi packages bpl

6
推荐指数
2
解决办法
3596
查看次数

你如何在设计时处理多个TPanel?

我在主窗体上有几个TPanel,我根据用户选择的选项显示/隐藏.问题是,在设计时我必须经常移动它们来编辑它们.是否有其他人处理这种情况的更容易/更好的方式?

delphi design-time

6
推荐指数
2
解决办法
2438
查看次数