小编Jer*_*ers的帖子

迭代成员变量

有没有办法在D2010中迭代对象的成员变量而不事先知道它们是什么?

delphi variables loops member delphi-2010

6
推荐指数
1
解决办法
962
查看次数

Delphi XE中没有更多xercesxmldom单元?

我想知道该xercesxmldom单元作为XML DOM实现之一发生了什么.
它似乎在Delphi XE中消失了.
为什么?

(我搜索了文档;找不到关于xercesxmldom消失的任何相关信息).

编辑:这些是我存档的来源:

R:\>dir /s /b xercesxmldom.pas
R:\D2006-Enterprise-D10-BDS-4.0\source\Win32\xml\xercesxmldom.pas
R:\D2007-Enterprise-D11-RadStudio-5.0\source\Win32\xml\xercesxmldom.pas
R:\D2009-Enterprise-D12-RadStudio-6.0\source\Win32\xml\xercesxmldom.pas
R:\D2010-Enterprise-D14-RadStudio-7.0\source\Win32\xml\xercesxmldom.pas
R:\D7.01.Architect\Source\Xml\xercesxmldom.pas
Run Code Online (Sandbox Code Playgroud)

R:\DXE-Enterprise-D15-RadStudio-8.0源树中没有任何内容......

--jeroen

delphi xerces xmldom delphi-xe

6
推荐指数
1
解决办法
1609
查看次数

C#将任何方法作为参数传递

记录时,总是会纠缠于字符串文字中.

我解决了很好的性能,通过传递一个字段和变量Expression<Func<T>> expression(如解释在这里),所以你可以做这样的事情:

public void Demo(string someArgument)
{
    LogFrameWork.LogLine("Demo"); // goal is to get rid of these string literals
    LogFramework.Log(() => someArgument);
}
Run Code Online (Sandbox Code Playgroud)

我想为方法Demo本身做类似的事情:

public void Demo(string someArgument)
{
    LogFramework.Log(this.Demo);
}
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

public static void Log(Delegate method)
{
    string methodName = method.Method.Name;
    LogLine(methodName);
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

public static void Log(Action method)
{
    string methodName = method.Method.Name;
    LogLine(methodName);
}
Run Code Online (Sandbox Code Playgroud)

但我得到这样的编译器错误:

Argument 1: cannot convert from 'method group' to 'System.Delegate' 
Argument 1: cannot convert from 'method group' …
Run Code Online (Sandbox Code Playgroud)

c# parameters methods

6
推荐指数
3
解决办法
5439
查看次数

不要做什么来阻止Delphi在.DPR中修改使用列表和{$*.RES}

每隔几周,我就会碰到这一点:当在Delphi项目中对使用单元进行IDE操作时,它会破坏.dpr文件.

会发生什么,它重建uses列表,但错误的位置.

我想知道要避免哪种使用模式,所以我不会再次遇到这个错误.

我在许多Delphi版本中都出现过这种错误.我知道它至少存在于Delphi XE2(今天又发生在那里),XE,2007,2006和7.

受损的片段通常是这样构造的:

ususes
  Forms,
  ..
  LastUnitInUses in 'LastUnitInUses.pas';

R *.RES}
Run Code Online (Sandbox Code Playgroud)

并应删除一个us,并添加一个{$:

uses
  Forms,
  ..
  LastUnitInUses in 'LastUnitInUses.pas';

{R *.RES}
Run Code Online (Sandbox Code Playgroud)

出错的示例文件:

program SysUtilsFormatTests;
{

  Delphi DUnit Test Project
  -------------------------
  This project contains the DUnit test framework and the GUI/Console test runners.
  Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options
  to use the console test runner.  Otherwise the GUI test runner will be used by
  default.

} …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe2

6
推荐指数
1
解决办法
359
查看次数

具有多个if/copy组合的post-build事件仅在第一个文件不存在时执行

鉴于bin\内部德尔福项目中包含的文件目录Cert.pemKey.pem低于德尔福后生成事件的唯一副本,如果这两个文件C:\Binaries\Cert.pem不存在:

if not exist $(OUTPUTDIR)Cert.pem (copy bin\Cert.pem $(OUTPUTDIR))
if not exist $(OUTPUTDIR)Key.pem (copy bin\Key.pem $(OUTPUTDIR))
Run Code Online (Sandbox Code Playgroud)

一旦C:\Binaries\Cert.pem存在,Key.pem永远不会复制该文件.

如何在后期制作活动中解决这个问题?

编辑:与我的2014年帖子不同,这确实可以使用括号.请参阅下面的答案.

delphi post-build-event

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

如何在Vista / XP中调整主音量

我想像vista和xp中的Get / SetMasterVolume一样以编程方式调整音量吗?使用mmsystem单位?

media delphi windows-xp volume windows-vista

5
推荐指数
1
解决办法
4762
查看次数

在Delphi中使用自定义值进行枚举

可以在Delphi 5中用自定义值声明枚举吗?

type
  MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error
Run Code Online (Sandbox Code Playgroud)

谢谢!

delphi enums delphi-5

5
推荐指数
2
解决办法
2290
查看次数

从资源文件中读取字符串列表

我正在使用Delphi XE Starter.我创建了一个CCs.RC文件并将该文件添加到项目中.我的CCs.RC文件中的典型行如下所示:

Danish1cc Text Danish1.cc
Run Code Online (Sandbox Code Playgroud)

直接在我添加的实施线之后

{$R CCs}
Run Code Online (Sandbox Code Playgroud)

当我尝试将此文件读入现有的字符串列表时,我收到一条[EResNotFound][1]错误消息.这是我用来尝试读取文件的代码:

procedure LoadStringListFromResource(const ResName: string;SL : TStringList);
var
  RS: TResourceStream;
begin
  RS := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
  try
    SL.LoadFromStream(RS);
  finally
    RS.Free;
  end;
end;
///
LoadStringListFromResource('Danish1cc',MySL)
Run Code Online (Sandbox Code Playgroud)

我的目标是将文件嵌入我的EXE中,当然能够阅读它:)感谢您的帮助.

delphi delphi-xe

5
推荐指数
1
解决办法
4446
查看次数

切换JIT调试器?

当您必须使用不同的IDE维护不同的项目时,将它们安装在同一台Windows计算机上通常是有意义的.

例如,在同一系统上混合Visual Studio和Delphi,或各种版本的Delphi(我确信其他版本甚至有不同的组合).

你会发现其中一件事是最新工具将自己安装为JIT调试器:应用程序崩溃时触发的即时调试器.

根据应用程序崩溃的工具和版本(有时在调试器内运行时无法重现错误,例如Heisenbug),您需要提前选择调试器.

你怎么能这样做?

windows delphi debugging visual-studio

5
推荐指数
1
解决办法
2189
查看次数

为什么将NIL数组赋给Variant会导致在Delphi 6中返回非空数组?

考虑低于该编译并在Delphi 6.当我恢复动态字符串数组没有错误运行,而不是看到空数组的代码SA,我看到的1与含有一个空字符串的单个元件的长度的数组.为什么这样,我如何安全地将NIL动态数组分配给Variant并正确恢复?这是代码:

TDynamicStringArray = array of string;

var
    V: Variant;
    sa: TDynamicStringArray;
begin
    sa := nil;

    V := sa;

    sa := V;

    OutputDebugString('sa has a single element now with an empty string in it when I expect it to be empty.');
end;
Run Code Online (Sandbox Code Playgroud)

delphi variant dynamic-arrays delphi-6

5
推荐指数
1
解决办法
703
查看次数