小编nrj*_*one的帖子

德尔福'AND'评估有2个条件

我必须拿起Delphi来完成我正在做的最近的合同工作,而我想要澄清的一件事就是在条件语句中执行逻辑,例如if.

我来自C/C++和这些语言的背景,一旦if声明失败,其余的逻辑就不会被执行.例如:

if (somefunc() == FALSE && anotherfunc() == TRUE)
Run Code Online (Sandbox Code Playgroud)

在上述情况下,如果somefunc()回报率TRUEanotherfunc()不会被调用.

从目前为止我所看到的Delphi中,这并不成立.相反,为了

if (somefunc() = False and anotherfunc() = True) then
Run Code Online (Sandbox Code Playgroud)

那么,无论什么somefunc()回报,anotherfunc()都会被召唤.

我已经阅读了各种Delphi书籍,并重读了一些有条件的章节,并且在任何地方都找不到这种行为.任何人都能指出我在Delphi或Pascal的某个地方,这种行为是什么?

delphi

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

在单个Team Foundation Server项目中使用多个Git存储库

我已经开始使用Team Foundation Service 2012(基于云的产品),因为他们已经宣布支持使用Git作为源控制解决方案.

我的初始测试是使用以项目命名的单个Git存储库进行的单个测试.

一切顺利,我可以克隆回购,从Visual Studio 2012中提交推送和拉动,更重要的是工作项关联也可以.

然而,对于真实的项目,在TFS项目中将代码库分割为多个Git repos更有意义.

这样做没有障碍,Team Foundation Service的界面非常好地支持了....

现在我发现在Visual Studio 2012中存在一些问题,我想知道我是否做错了什么,或者它是否只是不完全支持的东西(还是?)

  • 经过测试,我发现如果Git repo与项目名称不同,那么你将失去轻松克隆repo的能力.出现的默认URL始终假定Git repo以预计命名.
  • 同样,当repo没有相同的名称时,您完全失去了将工作项与提交相关联的能力.它还在Git repo名称后面显示"(Local)",好像它根本不知道它实际上与TFS项目相关联.

其他人发现这个,也许是一个解决方案(同时仍允许在同一个TFS项目下使用多个Git回购)?

更新:找到一些这样的链接

http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3811952-allow-multiple-git-repositories-in-a-single-team-p

http://social.msdn.microsoft.com/Forums/vstudio/en-US/dff9c737-fbd1-4ca8-9c32-3be14eb614ba/what-is-the-best-team-project-setup-for-using-git-与-TFS

所以至少有一个人碰到了它.

如果您使用Git远程推送到正确的repo URL,多个repo的工作正常,只有在工作项关联和克隆repo时使用Visual Studio 2012集成时才会出现故障.

git tfs visual-studio-2012

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

Delphi CompareMem和指针

我一直在使用DUnit作为TDD的驱动程序在Delphi 5中开发一些软件但我发现在使用CheckEqualsMem时它仍然失败,即使在调试器中我可以看到被比较的对象(在这种情况下是两个长字的数组)相同.

在内部,CheckEqualsMem使用CompareMem,发现这是返回false的内容.

深入研究我发现,如果我使用@或Addr调用CompareMem指向对象地址的指针,即使内存相同,CompareMem也会失败,但如果我使用PByte(来自windows)或PChar,它会正确地比较内存.

为什么?

这是一个例子

var
  s1  : String;
  s2  : String;
begin
  s1 := 'test';
  s2 := 'tesx';

  // This correctly compares the first byte and does not return false 
  // since both strings have in their first position
  if CompareMem(PByte(s1), PByte(s2), 1) = False then
    Assert(False, 'Memory not equal');

  // This however fails ?? What I think I am doing is passing a pointer
  // to the address of the memory where the variable is and telling …
Run Code Online (Sandbox Code Playgroud)

delphi

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

标签 统计

delphi ×2

git ×1

tfs ×1

visual-studio-2012 ×1