我用Delphi开始了一个原型,所有源文件都在一个目录下.
现在,我想用文件夹重新组织所有内容.
我找到了两种方法来做到这一点.
1 /首先是在Delphi IDE和Save as 新文件夹中打开每个单元.然后删除旧的单元文件.
2 /在Windows资源管理器下,重新组织所有内容,然后在Delphi IDE中打开项目,删除对旧(未知)单元的引用,然后按文件夹添加每个单元文件夹.
因为我有100多个单位,无论我使用什么方法(1或2),它都非常痛苦.
你是如何进行这种重组的?
我错过了一个功能吗?
我正在使用Delphi2010 Enterprise Update 4.
当我在IDE中打开我的项目并显示mainform代码时,有2个单元名称以红色下划线.
xxx http://img268.imageshack.us/img268/6475/unitnameunresolved.png.
我已经验证了单位源的路径在Library path和中Browsing path.
令人惊讶的是,当我右键单击该单元并选择时Open file at cursor,它可以工作(即delphi打开正确的单元).
有什么想法吗?
我需要比较两个TStream后代是否具有相同的内容.对我来说唯一有趣的结果是布尔值是/否.
我将编写一个简单的循环检查字节流内容的字节.
但我很好奇,要知道,如果有一个已经存在的功能.我没有找到任何内部DelphiXE或JCL/JVCL库.
当然,这两个流的大小相同!
我为在中小型目标上运行的嵌入式项目编写了一个小型操作系统.
我添加了一些具有高测试代码覆盖率(> 95%)的自动化单元测试,但范围仅是静态部分.
我得到了一些代码指标作为复杂性和可读性.
我正在使用支持MiSRA的规则检查器测试我的代码,当然还修复了所有警告.
我正在使用静态分析器测试代码并再次修复所有警告.
我现在可以做些什么来测试和改进我的操作系统的可靠性? 动态部分怎么样?
在我的项目的构建日志中,我可以看到这些属性:
<integrationProperties>
<CCNetProject>Gdet_T</CCNetProject>
...
<LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate>
<LastChangeNumber>10841</LastChangeNumber>
</integrationProperties>
Run Code Online (Sandbox Code Playgroud)
我想通过财产CCNetProject和LastChangeNumber批处理文件.它可以很好地使用CCNetProject,因为它可以在批处理中用作环境变量%CCNetProject%.
但它不适用于其他属性(那些不是以CCnet前缀开头)为LastChangeNumber或LastModificationDate.
我试图将它作为参数传递,但它失败了!
<exec>
<executable>$(WorkingFolderBase)\MyBatch.bat</executable>
<baseDirectory>$(WorkingFolderBase)\</baseDirectory>
<buildArgs>$(LastModificationDate)</buildArgs>
</exec>
Run Code Online (Sandbox Code Playgroud)
我试图将其作为环境变量传递,但它失败了:
<exec>
<executable>$(WorkingFolderBase)\MyBatch.bat</executable>
<baseDirectory>$(WorkingFolderBase)\</baseDirectory>
<environment>
<variable>
<name>svn_label</name>
<value>"${LastModificationDate}"</value>
</variable>
</environment>
</exec>
Run Code Online (Sandbox Code Playgroud)
当我显示参数或变量时,结果总是相同的:空字符串或变量名称 $(svn_label)
我确信这很简单,但是......我找不到了!任何的想法 ?
我正在考虑实现一个工具提示,类似于Delphi XE在您调试时将其悬停在对象上的方式.即,它打开一个带有+符号的提示窗口,您可以展开等.
我正在尝试创建一个提示窗口,当鼠标悬停在控件(例如按钮)上时,它将显示一个项目列表(例如),该控件将允许用户点击某个项目,然后我可以根据项目执行某些操作他们选择了.
是否有任何组件可能已经这样做了?或者我最好只创建一个无边框表单并处理显示/隐藏自己的鼠标事件?
谢谢
贾森
我在本周末的编码时犯了一个小错误.
在下面的代码中,我正在创建一个对象并将其强制转换为接口.后来,我试图释放它用FreeAndNil();
type
IMyIntf = interface
[...]
end;
TMyClass = class(TInterfacedObject, IMyIntf)
[...]
end;
var
Myintf : IMyIntf;
begin
Myintf := TMyClass.Create;
[...] // Some process
FreeAndNil(Myintf); // CRASH !!!
end;
Run Code Online (Sandbox Code Playgroud)
当然,程序崩溃在这一行.我完全理解这个问题,但我不明白为什么编译器不会警告我这个问题?没有动态的东西背后,只是我正在尝试释放界面!为什么不给我写错误/警告?
是否有任何真正的解释或仅仅是编译器限制?
以前,为了保存某些应用程序的设置,我使用了:
TSettings = class(TPersistent)为容器使用单行保存所有内容的TJvAppXMLFileStorage组件:
JvAppXMLFileStorage.WritePersistent(...);
但是现在,我正在使用TObjectList作为TSettings类中的属性.
所以我放弃了TCollection/TCollectionItem以支持泛型 ...
当序列化时,没有项目列表 ......我认为这是因为TObjectList不是来自TPersistent.
如何使用TJvAppXMLFileStorage序列化我的TObjectList <>?
如何在故事板中使UIScrollview足够大,以便可以向其中添加所有需要的内容?我要添加的内容量在垂直方向上比iPhone屏幕长,但是情节提要不会让我将滚动视图与视图控制器分离,因此我可以垂直扩展它并添加所有需要的内容。
如何在情节提要中垂直扩展滚动视图,以便可以将需要添加的所有内容添加到其中?
改写:我想使用界面构建器在滚动视图中放置很多东西,界面构建器iPhone矩形不允许我在虚拟屏幕末端下方添加事物,我使用的是滚动视图,因为我需要添加事物低于常规iPhone屏幕的底部。例如,在Android开发中,当您在layout.xml中的滚动视图上用完垂直空间时,滚动视图会变长,因此您可以添加更多内容,有没有办法在情节提要中做类似的事情?
在带有 TChromium (DCEF3) 的 Delphi XE7/XE8 中,我需要以编程方式将当前网页打印(即保存)到 PDF 文档文件(可选地无需用户交互)到预定义的本地路径。目前,我只能通过使用自定义 PDF 打印机驱动程序并以编程方式打开打印机对话框来间接执行此操作:
procedure TMainForm.btnPrintToPDF(Sender: TObject);
begin
// open the printer dialog:
crm.Browser.Host.Print;
end;
Run Code Online (Sandbox Code Playgroud)
然而,这有两个缺点:
但Chrome有一个内置的PDF打印机驱动程序和打印预览,可以通过键盘快捷键CTRL+P显示。但是,当我在guiclient TChromium 演示应用程序中按 CTRL+P 时,什么也没有发生,也没有像 Chrome 中那样显示打印预览。
那么如何在 TChromium 中调用 PDF 打印预览,并可能使用预设输出路径(不显示文件对话框)?
delphi ×7
delphi-xe ×3
c ×1
ccnet-config ×1
compare ×1
components ×1
crash ×1
delphi-2010 ×1
delphi-xe8 ×1
directory ×1
embedded ×1
free ×1
ide ×1
interface ×1
ios ×1
jedi ×1
objective-c ×1
refactoring ×1
reliability ×1
stream ×1
tooltip ×1
uiscrollview ×1
unit-testing ×1
xml ×1