小编Jos*_*ons的帖子

Crystal报告11:如何处理或修剪特殊字符

在我的水晶报告中,我注意到从表中拉出的一个字段有特殊字符.更具体地说,回车和制表符.有没有办法解决这个问题,所以它在我的报告中没有显示空白?

提前致谢.

crystal-reports

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

CueText等效于TMemo

我有这个Delphi代码来设置我的表单上的控件的提示文本:

procedure TfrmMain.SetCueText(edt: TWinControl; cueText: string);
const
  ECM_FIRST = $1500;
  EM_SETCUEBANNER = ECM_FIRST + 1;
begin
  SendMessage(edt.Handle,EM_SETCUEBANNER,0,
    LParam(PWideChar(WideString(cueText))));
end;
Run Code Online (Sandbox Code Playgroud)

我希望TMemo 具有相同的效果,但MSDN文档说:

您无法在多行编辑控件或富编辑控件上设置提示横幅.

是否有一种标准方法可以在TMemo上产生cuetext效果,或者我是否必须摆弄OnEnter/OnExit事件并自行滚动?

delphi

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

从CASE语句分配给T-SQL变量

我想在查询中分配一些变量,这些变量使用CASE它的列的语句.不太确定如何做到这一点,无法找到正确的语法.

这是我到目前为止,但它有语法错误.

 -- set @theID and @theName with their appropriate values
 select top (1) 
 @theID = (Case when B.ID IS NULL then A.ID else B.ID END) ,
 @theName = (Case when B.Name IS NULL then A.Name else B.Name END) 
 from B left join A on A.ID = B.ID where ...
Run Code Online (Sandbox Code Playgroud)

将这些变量粘贴在那里的正确位置/方法是什么?

sql t-sql sql-server

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

向后兼容性有多重要?

在考虑升级开发工具时,向后兼容性有多重要?如果需要对源代码进行重大更改,您还会购买Visual Studio 2010吗?在交易新功能的向后兼容性方面,您的转折点在哪里?

backwards-compatibility

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

如何判断Delphi DCU中定义的类型?

我有一组编译的Delphi dcu文件,没有源代码.有没有办法确定dcu中定义的类型?

delphi dcu

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

我应该在代码中使用块标识符("end;")吗?

Code Complete表示,为了清晰起见和作为防御措施,始终使用块标识符是一种好习惯.

自读这本书以来,我一直在虔诚地做这件事.有时看起来似乎过多,如下面的情况.

Steve McConnell是否有权坚持始终使用块标识符?您会使用以下哪些?

//naughty and brief
with myGrid do
  for currRow := FixedRows to RowCount - 1 do
    if RowChanged(currRow) then
      if not(RecordExists(currRow)) then
        InsertNewRecord(currRow)
      else
        UpdateExistingRecord(currRow);

//well behaved and verbose
with myGrid do begin
  for currRow := FixedRows to RowCount - 1 do begin
    if RowChanged(currRow) then begin
      if not(RecordExists(currRow)) then begin
        InsertNewRecord(currRow);
      end  //if it didn't exist, so insert it
      else begin
        UpdateExistingRecord(currRow);
      end;  //else it existed, so update it
    end;  //if any …
Run Code Online (Sandbox Code Playgroud)

delphi coding-style code-formatting

6
推荐指数
4
解决办法
459
查看次数

"附加到进程"作为构建后事件

我有一个在"w3wp.exe"进程下运行的应用程序.

在调试时,我经常发现自己遵循以下步骤:

1 - 做出一些改变

2 - 构建项目

3 - 使用"工具"菜单下的"附加到进程"对话框附加到"w3wp.exe".

4 - 在应用程序中执行一些操作以使我的代码执行,因此我可以在调试器中逐步执行它

我想在后构建脚本中自动执行第3步,以便IDE在构建完成后自动附加到进程.请注意,我已经将应用程序作为构建后过程的一部分启动,因此我可以指望此时存在的过程.

有没有人知道自动化"附加到进程"命令的方法?命令行中的某些内容会特别好,但宏也可以.

我在Windows 7,64位下使用Visual Studio 2008.

编辑 @InSane基本上给了我正确的答案,但它不起作用,因为我需要调试托管代码,而不是本机代码.看来vsjitdebugger默认使用Native代码,因此我的断点没有被击中.在IDE内部,我可以指定"托管代码",调试器按预期方式附加.那么有没有办法将vsjitdebugger指向托管代码?

automation visual-studio-2008 post-build

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

如果我使用C#代码构建解决方案,我该如何判断哪些应用程序实际构建了?

我有代码将构建(而不是重新构建)来自C#的整个解决方案.

标准构建只会编译实际已更改的项目.

构建完成后,我想知道实际构建了哪些项目.

我试过了:

1 - 在构建完成后,从BuidlResult中查找已更改/未更改的值(或类似值)

2 - 附加自定义记录器并捕获每个事件,然后仔细检查消息以查看已更改和未更改的项目之间是否存在任何差异

我真的很惊讶,这些基本信息并不容易获得.例如,Logger的ProjectFinished事件的ProjectFinishedEventArgs参数包含布尔值或状态值似乎是合乎逻辑的.但如果它在那里,那我就忽略了它.

有谁知道如何判断msbuild的产品是否被重新编译?我讨厌检查输出二进制文件的时间戳,但也许这就是我必须要做的.

private void DoBuild()
{
  ProjectCollection pc = new ProjectCollection();
  BuildLog = new CRMBuildLogger { Parameters = _logfilename };
  Dictionary<string, string> globalProperty = new Dictionary<string, string>();
  BuildParameters bp = new BuildParameters(pc)
  {
    DetailedSummary = true,
    Loggers = new List<ILogger>() { BuildLog }
  };
  BuildRequestData buildRequest = new BuildRequestData(SolutionFileName, globalProperty, "12.0", new[] { "Build" }, null);
  BuildLog.BuildResult = BuildManager.DefaultBuildManager.Build(bp, buildRequest);
}
Run Code Online (Sandbox Code Playgroud)

c# msbuild

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

在Oracle中,如何检测夏令时开始/结束的日期?

在Oracle中是否有办法选择夏令时切换到我的语言环境的日期?

模糊地等同于此的东西会很好:

SELECT CHANGEOVER_DATE
FROM SOME_SYSTEM_TABLE
WHERE DATE_TYPE = 'DAYLIGHT_SAVINGS_CHANGEOVER'
  AND TO_CHAR(CHANGEOVER_DATE,'YYYY') = TO_CHAR(SYSDATE,'YYYY');  -- in the current year
Run Code Online (Sandbox Code Playgroud)

编辑:我希望找到一个解决方案,在国会调整DST法律时不需要改变,就像他们在2007年所做的那样.但是,已发布的解决方案可行.

oracle dst

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

我可以重新编译Delphi IDE使用的.PAS文件吗?

我熟悉Jeff Atwood关于错误总是程序员错误的文章,但我相信我确实在Delphi .pas文件中发现了一个错误.

具体来说,我使用的是Delphi 2007,错误发生在DBCommon.pas文件的第955行,该文件位于我的机器上:

C:\ program files\codegear\rad studio\5.0\source\Win32\db\DBCommon.pas

代码是这样的:

...
  FieldIndex := StrToInt(Token);
  if DataSet.FieldCount >= FieldIndex then
    LastField := DataSet.Fields[FieldIndex-1].FieldName else
...
Run Code Online (Sandbox Code Playgroud)

如果"Token"的值为零,那么我们尝试访问DataSet.Fields的索引-1,从而导致列表索引超出边界错误.

这个错误不会引发给用户,因为它在它达到高位之前就被处理了,但是每次发生这种情况时调试器都会中断是非常恼人的.

我可以"忽略这个异常类型",但索引越界错误很常见,我不想普遍忽略它们.

导致FieldIndex为零的情况是当您有一个SELECT语句,其ORDER BY包含一个函数时,如:

ORDER BY
  CASE WHEN FIELD1 = FIELD3 THEN 1 ELSE 2 END
 ,CASE WHEN FIELD2 = FIELD4 THEN 1 ELSE 2 END
Run Code Online (Sandbox Code Playgroud)

我可以修复DBCommon.pas中的错误,但Delphi不会重新编译,我的更改不会生效.如果我重命名.DCU文件,那么它只是抱怨无法找到"DBCommon.dcu".

所以(最后)我的问题是:我可以用我的修复程序重新编译DBCommon.pas,如果是的话,怎么样?

delphi delphi-2007

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