小编Hei*_* Z.的帖子

寻找具有良好单元测试覆盖率的开源Delphi项目

出于教育原因,我正在寻找一个具有良好单元测试覆盖率的开源Delphi项目.优先考虑受测试驱动开发的项目.项目的规模无关紧要.

主题应该是商业或游戏开发,但不是网络项目.

任何提示?

编辑:

感谢您的建议,但我更喜欢那些请求来自"普通"用户而不是来自CRM或ERP系统等程序员的项目.例如,任务计划程序或跳转运行游戏.有没有人见过这样的东西?

delphi tdd unit-testing

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

如何使用空值索引日期列?

当某些行具有空值时,我应该如何索引日期列?我们必须在日期范围和具有空日期的行之间选择行.

我们使用Oracle 9.2及更高版本.

我找到的选项

  1. 在日期列上使用位图索引
  2. 使用日期列上的索引和状态字段上的索引,当日期为空时,该值为1
  3. 使用日期列上的索引和其他已授予的非空列

我对选项的看法是:

到1:表必须使用许多不同的值才能使用位图索引
2:我必须仅为此目的添加一个字段,并在我想要将空日期行检索
为3 时更改查询:锁定棘手以添加字段到一个不是真正需要的索引

这种情况的最佳做法是什么?提前致谢

我读过的一些信息:

Oracle Date Index
Oracle什么时候索引空列值?

编辑

我们的表有300,000条记录.每天插入1,000到10,000条记录并删除.280,000条记录的deliver_at日期为null.它是一种挑选缓冲区.

我们的结构(翻译成英文)是:

create table orders
(
  orderid              VARCHAR2(6) not null,
  customerid           VARCHAR2(6) not null,
  compartment          VARCHAR2(8),
  externalstorage      NUMBER(1) default 0 not null,
  created_at           DATE not null,
  last_update          DATE not null,
  latest_delivery      DATE not null,
  delivered_at         DATE,
  delivery_group       VARCHAR2(9),
  fast_order           NUMBER(1) default 0 not null,
  order_type           NUMBER(1) default 0 not null,
  produkt_group        VARCHAR2(30)
)
Run Code Online (Sandbox Code Playgroud)

oracle indexing optimization null

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

12
推荐指数
1
解决办法
2062
查看次数

如何实现TPageControl的TTabsheet的关闭按钮

如何实现像Firefox这样的TPageControl的TTabsheet的关闭按钮?

编辑:
Delphi版本:Delphi 2010
操作系统:Windows XP及更高版本

delphi tpagecontrol

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

如何确定用户帐户是否是AD组的(间接)成员?

如何确定用户帐户是否是AD组的成员,尤其是当用户不是该组的直接成员时

一个例子:

  • user1是group1的成员
  • group1是group2的成员
  • (虚构)函数调用的结果IsUserMemberOf('user1', 'group2')应为TRUE

对于.NET,有一个解决方案:

static bool IsUserMemberOf(string userName, string groupName)
{
    using (var ctx = new PrincipalContext(ContextType.Domain))
    using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName))
    using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, userName))
    {
        return userPrincipal.IsMemberOf(groupPrincipal);
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能用Delphi(Delphi-2007)做到这一点?

解:

我接受了Remko的答案,但由于他的代码在Delphi-2007(某些String/WideString问题)下不起作用,这里是我正在运行的D2007版本:

unit Unit1;

interface

uses  // Jedi ApiLib
  SysUtils, Classes, Windows, JwaActiveDs, JwaAdsTlb, JwaNative, JwaWinNT, JwaWinBase,
  JwaNtSecApi, JwaNtStatus,  JwaWinType;    

type
  // Some Helper Types
  TSidArray = array of PSID;
  PSidArray = ^TSidArray;

  TAdsValueArray = array[0..ANYSIZE_ARRAY-1] of ADSVALUE;
  PAdsValueArray …
Run Code Online (Sandbox Code Playgroud)

delphi active-directory delphi-2007

7
推荐指数
1
解决办法
2440
查看次数

一个简单的delphi 2010调试可视化工具

我收集了一些delphi 2010试用版的经验.我正在寻找一个简单的调试可视化工具,因为示例调试可视化工具不是路径的一部分.我做了很多新的rtti类型TValue和TValue.ToString无法从调试器调用(导致异常),所以我的想法是为它编写调试可视化器.格式应该是这样的

(<data-type)<ToString-value>
Run Code Online (Sandbox Code Playgroud)

例子

(integer)5
(string)'Hello World'
(Array<String>)['a', 'list', 'of', 'items']
Run Code Online (Sandbox Code Playgroud)

有一个简单的调试值替换器演示(我认为这就是名字:-))我可以开始了.

delphi debugging delphi-2010

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

组件在设计时如何确定项目目录

我编写了一个组件,它应该存储一些与项目目录相关的信息.每次更改组件的属性时,都应该写一个文件.那么组件如何在设计时确定当前项目目录.

提前致谢

编辑:
我想在每次更改组件的属性时生成delphi源文件,以便在编译代码时始终获得最新版本.可以把它想象成一种代码生成器.

目前我设置了存储源的整个路径和文件名,但我更喜欢项目的相对路径(或包含我的组件的表单/ datamodule),以便更容易在不同的开发人员机器上复制项目.

delphi components design-time delphi-2010

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

如何创建线程文件而不覆盖现有文件?

到现在为止,每当我想创建一个文件而不覆盖现有文件时,我就做了这样的事情:

if not FileExists(filename) then
  stream := TFileStream.Create(filename, fmCreate);
Run Code Online (Sandbox Code Playgroud)

但这不是线程安全的.所以现在我正在寻找一个线程安全版本.

也许我可以组合一些模式,以便TFileStream.Create(filename, fmCreate +fm???);在文件存在时失败?

我需要这个与旧DOS程序通信目录锁.但是DOS程序没有打开文件.:-(

delphi thread-safety

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

如何用Delphi控制相机

Delphi程序应该用尼康D5000AF SDX制作产品照片.我需要的唯一命令是"拍照","给我照片".

哪个库或API可以帮助我?

delphi api sdk camera

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

如何将接口变量分配给Rtti.TValue类型的变量

目前我给delphi2010一个试验,发现了TVtue类型的Rtti单元.TValue具有非常有趣的功能,但我找不到分配界面的方法.

我尝试以下方法

program Project1;
uses
  Classes, SysUtils, Rtti;
var
   list : IInterfaceList;
   value : TValue;
begin
  // all these assignments works
  value := 1;
  value := 'Hello';
  value := TObject.Create;

  // but nothing of these assignments works
  list := TInterfaceList.Create;
  value := list; // [DCC Fehler] Project1.dpr(15): E2010 incompatible types: 'TValue' and 'IInterfaceList'
  value.From[list]; // [DCC Fehler] Project1.dpr(16): E2531 Method 'From' requires explicit typarguments
  value.From<IInterfaceList>[list]; // [DCC Fehler] Project1.dpr(17): E2035 Not enough parameters
end.
Run Code Online (Sandbox Code Playgroud)

我找不到任何进一步的信息.不是在delphi帮助系统而不是在互联网上.我做错了什么?

delphi rtti delphi-2010

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

如何获取主题标签页的颜色

在具有XP及以上主题的操作系统上运行时,如何确定TTabSheet的背景颜色?

delphi themes ttabsheet

0
推荐指数
1
解决办法
1140
查看次数