小编mjn*_*mjn的帖子

Delphi中的EProgrammerNotFound异常?

在Delphi 2009中,SysUtils.pas包含第425行:

EProgrammerNotFound = class(Exception);
Run Code Online (Sandbox Code Playgroud)
  • 这只是一个复活节彩蛋还是严肃的东西?
  • 什么时候应该提出这个例外?
  • 它是否也存在于Delphi Prism和/或Free Pascal中?

问:这个异常类是否仍在Delphi中声明(目前是XE7)?答:是的,甚至有记录!

指示软件故障的非标准方式.

您可以使用EProgrammerNotFound作为替代,以指示在运行时检测到的软件故障.

delphi delphi-2009 delphi-xe7

122
推荐指数
6
解决办法
8221
查看次数

78
推荐指数
5
解决办法
14万
查看次数

WSDL可以指示Web服务的SOAP版本(1.1或1.2)吗?

是否可以根据WSDL中的信息查看Web服务是否使用SOAP 1.1或1.2?

soap wsdl web-services

71
推荐指数
4
解决办法
9万
查看次数

我可以在Android Dalvik上使用哪些编程语言?

理论上,Dalvik执行任何虚拟机字节代码,例如使用编译器创建

  • AspectJ的
  • ColdFusion的
  • Clojure的
  • Groovy的
  • JavaFX脚本
  • JRuby的
  • Jython的
  • 犀牛
  • 斯卡拉

Dalvik的字节码编译器的工作版本是否可用于除Java之外的其他语言?

python java android scala dalvik

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

什么是Delphi System单元中的TMonitor有用?

在阅读了文章"Simmering Unicode,让DPL沸腾""Simmering Unicode,让DPL沸腾(第2部分)"的"Oracle Delphi"(Allen Bauer)之后,Oracle就是我理解的全部:)

文章提到了Delphi Parallel Library(DPL),锁定免费数据结构,互斥锁条件变量(这篇维基百科文章转发到' Monitor(同步) ',然后介绍了用于线程同步的新TMonitor记录类型并描述了它的一些方法.

是否有介绍文章,其中的示例显示了何时以及如何使用此Delphi记录类型?网上有一些文档.

  • TCriticalSection和TMonitor之间的主要区别是什么?

  • 我能做些什么与PulsePulseAll方法呢?

  • 它是否具有例如C#或Java语言的对应物?

  • RTL或VCL中是否有使用此类型的代码(因此它可以作为示例)?


更新:文章为什么在Delphi 2009中TObject的大小翻了一番?解释说现在可以使用TMonitor记录锁定Delphi中的每个对象,每个实例需要额外四个字节.

看起来TMonitor的实现类似于Java语言中的Intrinsic Locks:

每个对象都有一个与之关联的内在锁.按照惯例,需要对对象字段进行独占和一致访问的线程必须在访问对象之前获取对象的内部锁,然后在完成它们时释放内部锁.

等待,Delphi中的PulsePulseAll似乎是Java编程语言中wait(),notify()notifyAll()的对应物.如果我错了,请纠正我:)


更新2:生产者/消费者应用程序的示例代码,使用TMonitor.WaitTMonitor.PulseAll基于Java(tm)教程中有关保护方法的文章(欢迎评论):

这种应用程序在两个线程之间共享数据:生成器,创建数据,以及使用它的消费者.两个线程使用共享对象进行通信.协调是必不可少的:消费者线程不得在生产者线程交付之前尝试检索数据,并且如果消费者未检索旧数据,则生产者线程不得尝试传递新数据.

在此示例中,数据是一系列文本消息,通过Drop类型的对象共享:

program TMonitorTest;

// based on example code at http://download.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes;

type
  Drop = …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2009 delphi-2010 tmonitor delphi-xe

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

使用Delphi的属性语言功能可以注释哪些语言元素?

Delphi 2010引入了可以添加到类型声明和方法的自定义属性.哪个语言元素可以使用自定义属性?

到目前为止我找到的例子包括类声明,字段和方法.(而AFAIK泛型类不支持自定义属性).

本文中显示了一些示例.看起来变量(任何类声明的外部)也可以具有属性.

根据这篇文章,可以使用属性

  • 类和记录字段和方法
  • 方法参数
  • 性能
  • 非本地枚举声明
  • 非局部变量声明

是否有其他语言元素可以放置属性?


更新:本文指出自定义属性可以放在属性之前:http://francois-piette.blogspot.de/2013/01/using-custom-attribute-for-data.html

它包含以下代码示例:

type
  TConfig = class(TComponent)
  public
    [PersistAs('Config', 'Version', '1.0')]
    Version : String;
    [PersistAs('Config', 'Description', 'No description')]
    Description : String;
    FTest : Integer;
    // No attribute => not persistent
    Count : Integer;
    [PersistAs('Config', 'Test', '0')]
    property Test : Integer read FTest write FTest;
  end;
Run Code Online (Sandbox Code Playgroud)

我想还有一种方法可以读取方法参数的属性,比如

procedure Request([FormParam] AUsername: string; [FormParam] APassword: string);
Run Code Online (Sandbox Code Playgroud)

delphi annotations delphi-2010 delphi-xe delphi-xe2

30
推荐指数
1
解决办法
1850
查看次数

初始化字符串函数结果?

我刚刚调试了一个函数,它返回一个让我担心的字符串.我一直认为返回字符串的函数的隐式Result变量在函数调用开始时将为空,但以下(简化)代码产生了意外的结果:

function TMyObject.GenerateInfo: string;

        procedure AppendInfo(const AppendStr: string);
        begin
          if(Result > '') then
            Result := Result + #13;
          Result := Result + AppendStr;
        end;

begin
  if(ACondition) then
    AppendInfo('Some Text');
end;
Run Code Online (Sandbox Code Playgroud)

多次调用此函数导致:

"Some Text"
Run Code Online (Sandbox Code Playgroud)

第一次,

"Some Text"
"Some Text"
Run Code Online (Sandbox Code Playgroud)

第二次,

"Some Text"
"Some Text"
"Some Text"
Run Code Online (Sandbox Code Playgroud)

第三次等

要修复它,我必须初始化结果:

begin
  Result := '';
  if(ACondition) then
    AppendInfo('Some Text');
end;
Run Code Online (Sandbox Code Playgroud)

是否需要初始化字符串函数结果?为什么(技术上)?为什么编译器不会发出警告"W1035函数的返回值'xxx'可能是未定义的"字符串函数?我是否需要遍历所有代码以确保设置值,因为如果未明确设置结果,则期望函数中的空字符串不可靠?

我在一个新的测试应用程序中对此进行了测试,结果是一样的.

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  S: string;
begin
  for i := 1 to 5 do
    S := GenerateInfo;
  ShowMessage(S); // 5 …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007 compiler-warnings

29
推荐指数
2
解决办法
4564
查看次数

可以而且Maven POM是否可以指定它是否需要Maven 3或更高版本?

我目前正在对使用Maven的Java项目进行一些清理,并使用NetBeans IDE来"调试"POM中的问题.我在IDE中将Maven 3.0.4设置为Maven版本,但其他开发人员或我们的Continuous Intgeration系统可能有不同的设置.

是否可以直接在POM中"强制执行"特定的Maven版本(例如,使用Maven 3特定元素)?

java maven-3 maven

23
推荐指数
3
解决办法
6813
查看次数

如何从类引用创建Delphi对象并确保构造函数执行?

如何使用类引用创建对象的实例,并确保执行构造函数?

在此代码示例中,将不会调用TMyClass的构造函数:

type
   TMyClass = class(TObject)
     MyStrings: TStrings;
     constructor Create; virtual;
   end;

constructor TMyClass.Create;
begin
   MyStrings := TStringList.Create;
end;

procedure Test;
var
   Clazz: TClass;
   Instance: TObject;
begin
   Clazz := TMyClass;
   Instance := Clazz.Create;
end;
Run Code Online (Sandbox Code Playgroud)

delphi constructor reference class delphi-2009

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

Guice和一般应用程序配置

对于用Java编写的监控软件,我考虑使用Google Guice作为DI提供程序.项目需要从外部资源(文件或数据库)加载其配置.该应用程序旨在以独立模式或servlet容器运行.

目前,配置不包含依赖项注入的绑定或参数,只有一些全局应用程序设置(JDBC连接定义和关联的数据库管理/监视对象).

我看到两个选择:

要么

  • 使用Guice -xml-config之类的Guice基于文件的插件来存储应用程序选项(如果有必要,这将允许稍后配置DI部分).

您是否建议将Guice用于这两项任务,或者将一般应用程序配置与依赖注入分开?您认为哪些优点和缺点最重要?

java configuration guice apache-commons-config

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