小编Bri*_*ost的帖子

Delphi的"环境变量"如$(BDS)如何评估?

我正在为我们的内部库做一些整洁的安装程序(而不是仅打开DPK并单击"安装"并稍后弄乱......)这使我必须了解如何获取各种Delphi变量等作为已知包,注册表RootDir值等.

我看到在Delphi中你可以使用许多变量(例如在搜索路径中),例如$(BDS)等.当我查看我的机器环境变量时,我在系统或当前用户中看不到这些变量.

我的问题是:

  1. 德尔福是否正在做一些内部扩展$(BDS)等的事情?或者我可以以某种方式在外部使用这些(例如在注册表中查找).
  2. 为什么符号$(xxxx)在搜索路径中而不是%xxxx%与envirnment变量一样?谢谢

delphi path environment-variables

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

建议最有用的Delphi TStringGrid(网格)替换

Delphi的一个较弱的区域是网格(例如TStringGrid),虽然它做了一个很好的基本工作,但是当你需要打印它或定制它的外观时它会变得更难.我已经使用它大约15年,因此它非常嵌入我的应用程序中,随着时间的推移,我推出了TGrid-to-RTF转换的家庭解决方案(通过MSWord进行打印),并使用TDrawGrid进行更多定制.我的解决方案(仍然)必须在Delphi 7和Delphi XE中工作.碰巧的是,我的网格都不是DB绑定的,它们都是用代码填充的.

现在我打算整理我的报告和'漂亮'我的表单,这意味着用更强大的实现替换网格.那里有负载,我有两个Developer Express Quantum GridTMS Grid Pack.虽然通过字体,颜色和打印​​的经验,时间非常有限,我将不胜感激,建议我应采用多种网格/打印显示报告组合.我目前没有报告生成器,正在考虑FastReports,但我愿意接受建议.

printing delphi report tstringgrid tgrid

13
推荐指数
2
解决办法
4056
查看次数

如何shell到另一个应用程序并让它以delphi形式出现

在Delphi中,我使用ShellExecute多年来启动(并可选择等待)其他应用程序.现在,我需要在我的一个Delphi应用程序表单中显示其中一个应用程序.我已经尝试了下面的代码作为一个简单的测试来打开记事本(它确实如此)并在我的表单上显示PAnel1中的结果(它没有).有些人可以让我走上正轨吗?谢谢

var
  Rec          : TShellExecuteInfo;
  wnd : HWnd;
const
  AVerb = 'open';
  AParams = '';
  AFileName = 'Notepad.exe';
  ADir = '';
begin
  FillChar(Rec, SizeOf(Rec), #0);

  Rec.cbSize       := SizeOf(Rec);
  Rec.fMask        := SEE_MASK_NOCLOSEPROCESS;
  Rec.lpVerb       := PChar( AVerb );
  Rec.lpFile       := PChar( AfileName );
  Rec.lpParameters := PChar( AParams );
  Rec.lpDirectory  := PChar( Adir );
  Rec.nShow        := sw_Show;

  ShellExecuteEx(@Rec);

  wnd := Windows.FindWindow( 'Notepad', nil );
  Windows.SetParent( Wnd, PAnel1.Handle );

end;
Run Code Online (Sandbox Code Playgroud)

delphi shellexecute setparent

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

如何在Delphi中找到导致AV的悬空接口

我有一个复杂的应用程序,我刚刚介绍了一些更改,添加了几个带接口的新类,并删除了其他一些.功能上它一切正常但我在类的Destroy过程之后得到了一个访问冲突:

"模块'xxxx.exe'中地址0040B984的访问冲突.读取地址80808088".

我知道这是在该类的'Finalize'代码中,如果我进入反汇编(Delphi 2010),我确实可以看到AV的重点.我看不出一个简单的方法来找出我的哪个变量触发了这个.在深入了解这个过程时是否有一个程序可以让我了解被引用的实例?

谢谢Brian

delphi debugging interface access-violation

11
推荐指数
3
解决办法
2611
查看次数

TortoiseSVN在哪里存储其设置(例如,全局忽略模式)?

在设置优秀TortoiseSVN的实例时,我发现自己重复其设置,例如"默认结帐文件夹"和"全局忽略模式"(以及许多其他设置,如链接工具).这是一种痛苦.后者存放在哪里?

我发现前者围绕注册表项[HKEY_CURRENT_USER\Software\TortoiseSVN],但缺少"全局忽略模式".用户树的文本搜索也找不到它.它在哪里?

svn settings tortoisesvn

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

如何跨平台管理Delphi XE2的版本信息

我正在将项目从XE迁移到XE2,我注意到我错过了我手动输入的版本信息,例如公司名称,产品版本等.创建一个简单的空VCL表单应用程序我看到在"所有配置"下输入版本信息的数据 - 当您选择"发布配置 - 32位Windows平台"时,所有平台都会消失.我想我可以通过平台重新输入我的信息,但这里发生了什么?人们会期望"所有配置 - 所有平台"信息在所有平台上传播,除非重写,就像编译器选项等,或者我错过了什么?

进一步说明 - 我进一步调查,我发现有一个使用DDevExtensions的工作,它在'Project'下添加了一个菜单选项.如果选中底部的"应用于选定"和"将VersionInfo应用于所有平台"框,则可以将显示的版本信息复制到所有平台,而不会影响组中的其他项目.

delphi versioninfo delphi-xe2

11
推荐指数
2
解决办法
6101
查看次数

如何在Delphi Docking示例中添加持久性

虽然我知道,除了包括德尔福对接演示还有其他更好的对接库,提供如开发快递库JVCL对接库,但对于具体的示范项目,我仅限于只使用Delphi的内置功能(尽管存在一些明显的缺陷).

我的问题涉及为对接状态添加持久性.我从检查Controls.pas看到,TDockTree是默认的Dock管理器,它有Stream I/O例程.在SO和各种论坛上挖掘,虽然我无法看到有人称这些例程.我已经尝试从相关的Create和OnDrop事件加载并保存到一个文件,但是我在黑暗中刺伤.我很高兴保存和恢复表单大小和状态,但我正在努力解决我应该保存的概念.任何善良的人都会给我一个起点吗?

我正在使用Delphi XE3,所以所有(?)的东西都是可能的!

非常感谢.

delphi persistence docking delphi-xe3

11
推荐指数
1
解决办法
791
查看次数

Delphi 2010远程调试 - 无法获得断点工作

我最近发布了一个关于我无法让Delphi 2010使用远程调试的问题.我没有取得任何成功,并决定发布一个简单的逐步测试技术,可能突出我做错了什么.这对我来说真的很重要 - 我从V1.0开始就使用Delphi并以此为生.像这样被困住是一种痛苦,它使我保持在Delphi 7上.

无论如何,这里去了.

  1. 确保Delphi 2010具有更新4和5.

  2. 启动Delphi 2010,然后启动File | 新的| VCL表格应用程序.在表单上放一个按钮,在按钮OnClick事件中放入'ShowMessage('hello').将项目及其单位保存在本地文件夹"C:\ scratch"中.构建项目,运行它,单击按钮,出现'hello',一切正常.

  3. 在联网的PC(194.168.1.64)上,创建一个新文件夹"c:\ DebugTest"并与R/W访问共享.

  4. 在194.168.1.64上,从Embarcadero网站(RemoteDebugger_upd2.exe)上的最新下载安装远程调试器.点击rmtdbg140.exe即可运行.接受来自防火墙的"解除阻止"消息.

  5. 使用Output directory =\192.168.1.64\DebugTest和unit output directory = c:\ scratch编辑DEBUG构建配置编译器设置 - 请参阅 编译器设置

  6. 编辑链接设置以设置Debug Information = True,包括远程调试符号= True.看到链接设置

  7. 将编译设置保留为默认值.看到编译设置

  8. 做一个完整的构建.相关项目exe'project2.exe'和'project2.rsm'出现在远程文件夹\ 192.168.1.64\DebugTest中.IDE中的Unit2中可以看到蓝点.

  9. 在"ShowMessage"行(按钮OnClick事件)上设置断点.

  10. 使用'运行'| "加载进程"使用远程路径= c:\ DebugTest\Project2.exe,远程主机= 192.168.1.64和工作目录= c:\ DebugTest参见加载进程远程选项卡

  11. 点击"加载".可见断点立即被禁用,项目开始运行并打开CPU窗口并停止.按f9导致exe在远程机器上完全运行,按钮工作,你只是无法调试它.

我尝试了各种"明显"的东西,比如防火墙关闭,但都无济于事.某个善良的人可以提出进一步的想法

非常感谢.

delphi remote-debugging breakpoints delphi-2010

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

如何将我的Delphi应用程序的任务栏标题与其主要表单标题分开?

我注意到,任务栏上显示的应用程序标题与主窗体标题中显示的应用程序标题重复,与Application.Title无关.我的主要表单标题是使用Caption:='xxxx'以编程方式设置的,如下所示:

My Fantastic Application V1.2.3.4 [Power User]
Run Code Online (Sandbox Code Playgroud)

这是在任务栏上忠实再现(截断).我真的很想在任务栏上看到"我的神奇应用程序".这可能吗?我已经尝试将Application.Title等设置为无效.

delphi taskbar title

10
推荐指数
1
解决办法
2035
查看次数

如何使用Delphi计算当前日期的日出和日落时间

给定特定纬度和经度并使用Delphi(我使用的是XE2),我需要确定当天的日出和日落时间(当地时间).我发现了这篇文章并使用了SysTools库,但结果与英国公布的表格不一致.

有没有人看过这个pascal算法?

delphi delphi-xe2

9
推荐指数
1
解决办法
2473
查看次数