在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,如果是的话,怎么样?
我有这样一个简单的查询
SELECT * FROM MY_TABLE;
Run Code Online (Sandbox Code Playgroud)
当我运行它时,SQL Server Management Studio挂起.
其他表和视图工作正常.
是什么导致这个?我以前在运行UPDATE语句时有锁,我知道如何处理这些.但是什么可能导致SELECT锁定?
我已经运行了"All Blocking Transactions"报告,并且说没有.
我已经厌倦了清除Debugging-> Exceptions选项Break when thrown以通过我正确处理的异常,然后设置Break when thrown选项以找到未正确处理的后续异常的来源.
我想要一种方法来排除某些try块Break when thrown,例如预处理器指令或其他东西.我尝试录制一个宏,但它只是打开Debugging-> Exceptions对话框.
即使在较粗糙的颗粒上,指定哪些方法可以免于Break when thrown调试也是很好的.
这是个梦想吗?
我想监视应用程序运行时执行的SQL查询.
我正在使用Delphi 2007下的Oracle 11g数据库的dbExpress连接.
过去可以在BDE下使用sqlmon.exe实用程序.
dbExpress有类似的实用程序吗?
我尝试过Toad SQL Monitor,它会记录两到三个查询,然后立即挂起应用程序.我可以设置一个完整的Oracle跟踪,但这对于日常调试来说太过分了.
我正在将组件包从Delphi 2007转换为Delphi 2010.
当我进行完整构建时,它会编译并开始链接.在链接期间,我收到两条消息:
[DCC Warning] MyPackage.dpk(235): W1033 Unit 'OleAuto' implicitly imported into package 'MyPackage'
[DCC Error] E2223 $DENYPACKAGEUNIT 'OleAuto' cannot be put into a package
Run Code Online (Sandbox Code Playgroud)
什么决定$ DENYPACKAGEUNIT中的单位?我该如何解决这个错误?
我有启动外部应用程序的代码,并自动填写密码提示.
我想自动按"ENTER"键,这样用户就不必单击"确定".
如何将ENTER键发送到外部应用程序?
下面是我现在的代码.
将密码发布到应用程序的第一行工作正常.
发送ENTER键的第二行完全没有效果.
我正在使用Delphi 2010.
//now that we have the control handle, send the password to it
SendMessage(AppHandle,WM_SETTEXT,0,Integer(PChar(pwd)));
//and now push ENTER
SendMessage(AppHandle,WM_KEYDOWN,0,Integer(PChar(#13)));
Run Code Online (Sandbox Code Playgroud) 我想使用Delphi创建一个程序来控制计算机的风扇速度并监控温度.
这样做涉及哪些API调用?
您可以分享哪些好的代码示例?
我想将一个C#应用程序指向DLL并获取该DLL中定义的类型列表.到目前为止我所看到的表面看起来是正确的,但是给出了下面指出的错误.
using System.Reflection;
...
static void Main(string[] args)
{
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom("C:\\MyAssembly.dll"); //error happens here
foreach (Type tp in SampleAssembly.GetTypes())
{
Console.WriteLine(tp.Name);
}
}
/*
This will give me:
Unable to load one or more of the requested types.
Retrieve the LoaderExceptions property for more information.
I wish it would give me something like this:
MyClass1
MyClass2
MyClass3
*/
Run Code Online (Sandbox Code Playgroud) 我在.cs文件中定义了一个C#类,我在现有项目中使用它.我们称之为Magic.cs中定义的Magic类.
现在我正在开发一个新项目,我想在我的新项目中实例化该类的实例.
如何在我的新项目中引用该类而不将文件实际复制到新项目的目录中?
在Delphi中,答案是"将类定义的位置添加到搜索路径".这是一个令人尴尬的愚蠢问题,但我无法在任何地方找到一个好的答案.
这是我尝试过的:
1 - 项目 - >属性 - >引用路径 - >添加我的类的位置(对类的引用仍未解析)
2 - 右键单击项目 - >"添加现有项目" - >选择类(在我的项目文件夹中创建一个新的单独副本)
3 - 右键单击项目 - >"添加引用" - >看到它期望像DLL一样编译目标.
delphi ×6
c# ×2
debugging ×2
oracle ×2
assemblies ×1
dbexpress ×1
delphi-2007 ×1
delphi-2010 ×1
dst ×1
hardware ×1
locking ×1
reflection ×1
sendmessage ×1
sql ×1