小编War*_* P的帖子

如何识别对象类型?

假设我有一个Treeview,它包含带有Object指针的项目.如何从所选项目中确定对象是什么,以便我可以访问它?

下面是一些提供想法的类和代码的基本示例:注意:TChildObject1和TChildObject2继承自TMyObject.

type
  TMyObject = class
  private
    FName: string;
  public
    property Name: string read FName write FName;

    constructor Create(aName: string);
  end;

type
  TChildObject1 = class(TMyObject)
  private
    FSomeString: string;
  public
    property SomeString: string read FSomeString write FSomeString;

    constructor Create(aName: string);
    destructor Destroy; override;
  end;

type
  TChildObject2 = class(TMyObject)
  private
    FSomeInteger: integer;
  public
    property SomeInteger: integer read FSomeInteger write FSomeInteger;

    constructor Create(aName: string);
    destructor Destroy; override;
  end;
Run Code Online (Sandbox Code Playgroud)

让我们说它们被创建并添加到TTreeview中,如下所示:

procedure NewChild1(aTreeView: TTreeView; aName: string);
var
  Obj: TChildObject1;
begin
  Obj := TChildObject1.Create(aName);
  try
    aTreeView.Items.AddObject(nil, …
Run Code Online (Sandbox Code Playgroud)

delphi oop pointers

4
推荐指数
1
解决办法
1666
查看次数

Prolog:错误的全局堆栈与看起来像一级递归给我

我在prolog中很生疏,但我不确定为什么这样的事情会失败:

frack(3).

frack(X) :- frack(X-1).
Run Code Online (Sandbox Code Playgroud)

所以,如果我评估frack(4).从交互式提示中定义了上述事实,我希望它不应该无休止地递归,因为4-1 = 3.但是我在SWI-Prolog中得到了这个错误:

ERROR: Out of global stack
Run Code Online (Sandbox Code Playgroud)

prolog failure-slice

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

NIL可以用于Sender对象吗?

最近我被要求自动化一个小程序,该程序提供一系列数据记录和四个潜在按钮中的任意两个,供用户在看到记录分析后选择.老板说,让用户看到分析是在浪费时间,因为用户总是选择按钮列表中的头号选项,他准备住我的猜测,除了最好的用户.因此,他希望添加一系列新按钮,以自动处理,手动处理和处理Case by Case.最后一个按钮只运行已有的代码.第二个按钮基本上什么都不做,只是退出.第一个按钮?嗯,这就是问题.

我决定做的是使用几个标志然后让自动路径根据分析模拟点击任何子按钮是最好的.问题是调用Button1Click(Sender)是不可能的,因为运行Analysis的过程称为RunAnalysis,并且没有附加到特定对象以传递TObject.我最终将Button1Click方法的内容重构为Button1Pressed,然后从Button1Click调用THAT.因此,我能够从RunAnalysis中调用Button1Pressed.

避免的路径是调用Button1Click(Nil).我没有尝试过,因为我有一个简单的解决方案(顺便说一句,感谢Modelmaker).但我的问题是,零参考是否有效或是否会造成灾难.我可以调用一个更高的函数(随机吗?)确实有一个发送者,JUST在过程调用中有一个发送者对象?如果我不使用任何实际参考发件人的东西,那么发件人对象有多重要?

系统详细信息:用于Windows XP的Win 7编程环境中的Delphi 7.

感谢GM,任何智慧

delphi delphi-7

4
推荐指数
3
解决办法
1212
查看次数

将二进制数据传递到D7中的dll函数

任何人都可以为我提供通过参数将任意数量的字节传递给dll函数的工作示例吗?

我想在没有任何额外内存单元的情况下完成它,只需要在基本的Windows类型上运行.

我需要每次调用"发送"大约300 kb的数据.

客户端分配的内存是否也应该在客户端免费?

delphi dll delphi-7

4
推荐指数
1
解决办法
819
查看次数

如何将自1970年以来的C/unix整数日期时间(以秒为单位)转换为Delphi中的DateTime?

我知道如何使用python的时间将"1328834615"转换为日期.

>>> import time
>>> time.ctime(1328834615)
'Fri Feb 10 08:43:35 2012'
Run Code Online (Sandbox Code Playgroud)

如何使用Delphi进行操作?

delphi datetime

4
推荐指数
1
解决办法
1907
查看次数

简单的TListView OwnerDraw文本字体大小和颜色示例?

我试图让所有者在报告模式下使用4列绘制列表视图控件OnCustomDrawItem.

当我尝试更改Canvas.font.color时,我就是这样,我没有问题.

如果我设置canvas.font.size,我发现控件绘制的文本大小没有变化.

如果我试图从OnCustomDrawItem中接管文本的绘画,我发现我做不到.我知道如何使用OnCustomDraw在背景区域绘制,但我想自定义绘制listview ITEM,以便我可以设置文本的颜色和字体名称以及字体大小.

我知道在ListView所有者绘制的上下文中使用Canvas存在一些问题,以及在ListView中可以执行的操作的一些限制.

procedure TForm1.MyListViewCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
    Sender.Canvas.Font.Size := 13; // NO effect.
    Sender.Canvas.Font.Color := clRed; // WORKS.
    Sender.Canvas.Font.Style  :=Sender.Canvas.Font.Style + [fsBold]; // WORKS!
end;
Run Code Online (Sandbox Code Playgroud)

delphi ownerdrawn tlistview

4
推荐指数
1
解决办法
4821
查看次数

使用msbuild和delphi XE的样本cruisecontrol.net ccnet.config?

前段时间我问过帮助在Delphi中进行持续集成工作.对于使用巡航控制,一个侧面答案有部分不完整(不适合我)的信息[这里] [2].

我已经让Jenkins/Hudson工作了,关于它的简单部分是(使用Delphi)配置完全通过Web浏览器完成.然而,使用CruiseControl.net设置起来要困难得多.

我想看一个示例ccnet.config,它将使用来自CruiseControl的MSBUILD构建一个hello-world delphi项目(Project1.dproj),并在每次修改subversion(或mercurial)上游源时自动重建.

到目前为止,我有:

  • 安装并获得CruiseControl.net版本1.6.7981并运行.
  • 我没有有效的项目 ccnet.config

这是我的ccnet.config,最初是我的,<exec>并按照以下建议更改为<msbuild>:

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
        <!-- CRUISECONTROL.NET Server configuration -->
        <project name="Project1">
            <tasks>
                <msbuild>
                    <projectFile>project1.dproj</projectFile>
                </msbuild>
            </tasks>
        </project>
</cruisecontrol>
Run Code Online (Sandbox Code Playgroud)

更新:我原本无法c:\builds\ccnet.config从ccnet.exe 读取它,但我发现我可以使用命令行参数运行ccnet.exe(非服务模式),这让我找到了我的ccnet.config问题.

delphi cruisecontrol.net continuous-integration delphi-xe

4
推荐指数
1
解决办法
5122
查看次数

如何在python中的xml.minidom中没有任何孩子的xml节点上设置文本?

昨天我问如何使用 minidom用子节点替换节点上的文本

今天我也试图<node/><node>text</node>

不幸的是,我觉得我的结果是一个可怕的黑客:

import xml.dom.minidom
from   xml.dom.minidom import Node

def makenode(text):
    n = xml.dom.minidom.parseString(text)
    return n.childNodes[0]

def setText(node, newText):
    if node.firstChild==None:
        str =  node.toxml();
        n = len(str)
        str = str[0:n-2]+'>'+newText+'</'+node.nodeName+'>'   #DISGUSTINGHACK!
        node.parentNode.replaceChild(  makenode(str),node )
        return
    if node.firstChild.nodeType != node.TEXT_NODE:
        raise Exception("setText: node "+node.toxml()+" does not contain text")
    node.firstChild.replaceWholeText(newText)

def test():
    olddoc = '<test><test2/></test>'
    doc=xml.dom.minidom.parseString(olddoc)
    node = doc.firstChild.firstChild  # <test2/>
    print "before:",olddoc
    setText(node,"textinsidetest2")
    newdoc =  doc.firstChild.toxml()
    print "after: ", newdoc


 #  desired result:
 # newdoc='<test><test2>textinsidetest2</test2></test>' …
Run Code Online (Sandbox Code Playgroud)

python xml

4
推荐指数
1
解决办法
2257
查看次数

有没有简洁的方法来更新记录的TDictionary中的所有值?

我想做这样的事情,但它不会编译因为无法分配对.

var
  MyDictionary: TDictionary<TGuid, TCustomRecord>;
  Pair: TPair<TGuid, TCustomRecord>;
begin
  // ... create and populate my dictionary ...

  foreach Pair in MyDictionary do
  begin
    PairRef.Value.MyField := PairRef.Value.MyField + 1;
  end;
end
Run Code Online (Sandbox Code Playgroud)

为了清楚起见,我知道如何通过更多代码实现这一目标,我正在寻找简洁易读的东西.

delphi

4
推荐指数
1
解决办法
1165
查看次数

ServiceStack可以通过System.DateTime值进行查询吗?

我正在评估ServiceStack以确定它是否适用于通用REST服务器构建目的,并且我正在尝试扩展Northwind演示,我已在本地更新以使用ServiceStack的4.0.44.我调整的代码是到位桶这里,倾倒从GIT中汞,然后用我自己的变化增加.

我的代码和上游serviceStack.Examples northwind演示之间的区别是以下新增内容:

A .../date/Route已添加到Orders的ServiceModel.Operations对象:

 namespace ServiceStack.Northwind.ServiceModel.Operations
 {
     ...

     [Route("/orders")]
     [Route("/orders/date/{ByDate}")] // ADDED!
     [Route("/orders/page/{Page}")]
     [Route("/customers/{CustomerId}/orders")]
    public class Orders
    {
        public int? Page { get; set; }
        public DateTime? ByDate { get; set; } // ADDED!
        public string CustomerId { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

然后这个案例的处理程序被添加到服务中,它在运行时因奇怪的LINQ故障而爆炸: variable 'o' of type 'ServiceStack.Northwind.ServiceModel.Types.Order' referenced from scope '', but it is not defined...

Source = System.Core



namespace ServiceStack.Northwind.ServiceInterface
{
    public class OrdersService : Service
    {
        private const int PageCount = 20; …
Run Code Online (Sandbox Code Playgroud)

c# servicestack ormlite-servicestack

4
推荐指数
1
解决办法
466
查看次数