在我的水晶报告中,我注意到从表中拉出的一个字段有特殊字符.更具体地说,回车和制表符.有没有办法解决这个问题,所以它在我的报告中没有显示空白?
提前致谢.
我有这个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事件并自行滚动?
我想在查询中分配一些变量,这些变量使用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)
将这些变量粘贴在那里的正确位置/方法是什么?
在考虑升级开发工具时,向后兼容性有多重要?如果需要对源代码进行重大更改,您还会购买Visual Studio 2010吗?在交易新功能的向后兼容性方面,您的转折点在哪里?
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) 我有一个在"w3wp.exe"进程下运行的应用程序.
在调试时,我经常发现自己遵循以下步骤:
1 - 做出一些改变
2 - 构建项目
3 - 使用"工具"菜单下的"附加到进程"对话框附加到"w3wp.exe".
4 - 在应用程序中执行一些操作以使我的代码执行,因此我可以在调试器中逐步执行它
我想在后构建脚本中自动执行第3步,以便IDE在构建完成后自动附加到进程.请注意,我已经将应用程序作为构建后过程的一部分启动,因此我可以指望此时存在的过程.
有没有人知道自动化"附加到进程"命令的方法?命令行中的某些内容会特别好,但宏也可以.
我在Windows 7,64位下使用Visual Studio 2008.
编辑 @InSane基本上给了我正确的答案,但它不起作用,因为我需要调试托管代码,而不是本机代码.看来vsjitdebugger默认使用Native代码,因此我的断点没有被击中.在IDE内部,我可以指定"托管代码",调试器按预期方式附加.那么有没有办法将vsjitdebugger指向托管代码?
我有代码将构建(而不是重新构建)来自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) 在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年所做的那样.但是,已发布的解决方案可行.
我熟悉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 ×4
automation ×1
c# ×1
coding-style ×1
dcu ×1
delphi-2007 ×1
dst ×1
msbuild ×1
oracle ×1
post-build ×1
sql ×1
sql-server ×1
t-sql ×1