寻找内置QT4小部件发出的各种SIGNALS的完整列表.环顾四周 - 似乎找不到一个.(使用PyQT 4.x和Python 3.2)
TIA
假设我们有以下内容:
IFirst = Interface(IUnknown)
function GetStuff: Integer;
end;
ISecond = Interface(IUnknown)
function GetOtherStuff: Integer;
end;
TFirstSecond = class(TInterfacedObject, IFirst, ISecond)
private
function GetStuff: Integer; //implementation of IFirst
function GetOtherStuff: Integer; //implementation of ISecond;
end;
Run Code Online (Sandbox Code Playgroud)
我从来不喜欢在TInterfacedObject中似乎没有办法区分哪些方法实现哪些接口.我错过了什么吗?有没有人知道代码的方式结构呢?要指定GetStuff是IFirst和GetOtherStuff的实现是ISecond的实现吗?('发表评论'不是我正在寻找的答案......)
我知道我可以使用'implements'指令为每个接口定义TFirstSecond中的属性,并将实现委托给TFirstSecond中包含的实例,从而隔离所有内容.但我想要一条捷径......
我有CodeSite Express,与Delphi XE Enterprise捆绑在一起.现在我正在XE中开发一个ISAPI应用程序(我在XE中使用attach to process进行跟踪和调试 - 工作正常),我想从我的ISAPI应用程序中获取一些CodeSite消息.
在附带的CodeSite帮助中的高级技术中,我发现了这一点:
"从服务登录
服务应用程序在与桌面不同的窗口站中运行.但是,默认情况下,CodeSite Dispatcher在桌面窗口工作站中运行.因此,用于将CodeSite消息传输到Dispatcher的默认消息传输机制(wm_CopyData窗口消息)被Windows阻止.Microsoft Windows不允许窗口消息跨越窗口站边界.....因此,如果我们希望将CodeSite消息从服务应用程序发送到Dispatcher,我们需要使用TCP协议而不是CopyData连接到Dispatcher.
题:
我是否认为相同的规则适用于ISAPI应用程序?我必须使用TCP从ISAPI应用程序中获取CodeSite消息?
在Sybase和MSSqlServer TransactSQL中,我们有一个函数IsNull(columnName,valueForNull),当列值为null时返回一个类型化的默认值.如何在SQLite中复制此功能?
TransactSQL中的示例:
select IsNull(MyColumn,-1) as MyColumn from MyTable
Run Code Online (Sandbox Code Playgroud)
如果MyColumn为null,则此表达式将返回-1作为MyColumn的值.想在SQLite中做类似的事情.
(是的,我知道我可以编写自己的包装函数来处理这个 - 这不是我正在寻找的答案)
TIA
我需要在使用自定义比较器的 TObjectList 上实现二分搜索,我相信使用 TCustomComparer。
目标:二分查找返回列表中符合特定属性参数的实例。
例如:
TMyClass=class
public
Index:integer
end;
TMyObjectList=TObjectList<TMyClass>;
begin
...
aMyClass.Index:=1;
aMyObjectList.binarysearch(aMyClass, aMyClassRef)
...
end;
Run Code Online (Sandbox Code Playgroud)
或者简单地:
begin
...
aMyObjectList.binarysearch(1, aMyClassRef)
...
end;
Run Code Online (Sandbox Code Playgroud)
我想循环并获取列表中也具有 Index==1 的 TMyClass 实例。
在 C++ 中,重载“==”运算符可以实现此目标。
新的 Delphi“帮助”相当稀疏且分散,使得东西很难找到,而且我不太熟悉新的 Delphi 泛型的所有细微差别。
那么 - 我如何在 Delphi XE 中使用 Generics.TObjectList 来做到这一点?
(使用德尔福XE)。
TIA
场景:
使用Delphi XE编写的Delphi ISAPI dll,32位.
ISAPI DLL在Win 7 64企业桌面计算机上运行IIS 7.5.
DLL运行正常.
使用Run-> Attach to Process调试Delphi XE IDE中的ISAPI DLL:
启动ISAPI DLL并附加到调试器中的wpw3.exe*32进程 - 可以在ISAPI上下文中运行时跟踪和调试代码.
问题:
我的硬盘上周死了,我得到了一个新的Win 7安装 - 标准的企业级Win 7 64企业级映像(与我以前的Win 7 64安装不同).
现在,当我进入Run-> Attach to Process时,我不再按名称看到wpw3.exe*32进程,尽管它在任务管理器中按名称可见.在"附加到进程"对话框中调用"show system processes"选项没有帮助.
我现在看到的(我在旧部署中从未见过)是一个很长的"通用"系统进程列表,其中包含PID,但没有"系统"以外的描述.
其中一个进程是我的wpw3.exe*32进程,我已经使用MS的Process Explorer识别了它的PID.但是,如果我尝试附加到该进程,我会收到一条错误消息 - "无法创建进程 - 访问被拒绝" - 所以我无法调试.(相同的错误消息'错误打开过程,拒绝访问'也在Process Explorer中显示某些属性,尽管过程'wpw3.exe*32'的描述性名称在那里可见,与PID相关联.)
如何获取Run-> Attach to process对话框以显示正确的wpw3.exe*32进程名称并附加到它,以便我可以调试?
这是德尔福问题吗?一个IIS问题?ISAPI问题?这是一个问题 - 即缺乏描述性的过程名称和无法附加到过程是由同样的问题引起的; 或者是这两个问题:一个问题是缺乏描述性名称,另一个问题是无法附加到流程?
(不想使用 - 无法真正使用 - webApp调试器 - 这些是部署到生产的ISAPI dll,就像它们在IIS中编写和调试一样 - 我需要看到它们在IIS上下文中运行.)
多年来一直在调试ISAPI dll,使用不同版本的Delphi,在各种操作系统和服务器环境中没有任何问题 - 以前从未遇到过这个问题.我很难过.
我对正则表达式缺乏经验 - 只是偶尔使用简单的正则表达式来完成我通过反复试验得出的编程任务,但现在我面临着严重的正则表达式挑战:
我有大约 970 个包含 Sybase Transact SQL 片段的文本文件,我需要找到这些文件中的每个表名,并在表名前面加上“#”。因此,我的选择是要么花一周时间手动编辑文件,要么使用 regEx(Python 3 或 Delphi-PRCE)编写脚本或应用程序来执行此任务。
规则如下:
表名始终是大写的 - 所以我只寻找大写的单词;
列名、SQL 表达式和变量始终为小写;
SQL 关键字、表别名和列值可以大写,但不能以“#”为前缀;
表别名(不得加前缀)前面始终有空格,直到前一个单词(这将是表名称)的末尾。
列值(不得加前缀)可以是数值,也可以是用引号引起来的字符。
以下是一些需要应用上述所有规则的示例文本:
update SYBASE_TABLE
set ok = convert(char(10),MB.limit)
from MOVE_BOOKS MB, PEOPLEPLACES PPL
where MB.move_num = PPL.move_num
AND PPL.mot_ind = 'B'
AND PPL.trade_type_ind = 'P'
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只做到了这一点:(不算太远......)
(?-i)[[:上:]]
非常感激任何的帮助。TIA,
明尼苏达州
我是GoLang的新手,来自Delphi,C++世界 - 对这种语言非常兴奋,我认为注定要成为"下一个大事".
我试图解决Go解析器和编译器如何处理指针和引用 - 似乎找不到任何明确规则布局的地方.
例如,在下面的代码示例中,返回类型*list.List和局部变量l是指针类型,并且*在其声明中需要指针符号,但在使用时不必取消引用它们:l.PushBack(i).但在同一代码中,输入参数value *int64被声明为指针,必须取消引用才能正确使用:var i int64 = *value / 2
我假设这是因为list.List是一个引用类型,因此解除引用在使用时是隐式的,int64而是一个值类型,必须像处理值类型的任何指针一样处理,例如在C++中:必须取消引用它.
让我感到困惑的是,即使*list.List必须*使用列表实例声明为指针类型,也不需要解除引用.这让我最初很困惑.那是"就是它的样子",还是我错过了什么?
样品:
func GetFactors(value *int64) *list.List {
l := list.New()
l.PushBack(*value)
var i int64 = *value / 2
for ; i > 1; i-- {
if *value%i == 0 {
l.PushBack(i)
}
}
return l
}
Run Code Online (Sandbox Code Playgroud) 这来自Bjarne Stroustrup的The C++ Programming Language,Fourth Edition 3.3.2.
我们真的不想要副本; 我们只是想从函数中得到结果:我们想要移动Vector而不是复制它.幸运的是,我们可以说明这个意图:
Run Code Online (Sandbox Code Playgroud)class Vector { // ... Vector(const Vector& a); // copy constructor Vector& operator=(const Vector& a); // copy assignment Vector(Vector&& a); // move constructor Vector& operator=(Vector&& a); // move assignment };鉴于该定义,编译器将选择移动构造函数来实现函数返回值的传递. 这意味着r = x + y + z将不涉及向量的复制.相反,Vector只是被移动.通常,Vector的移动构造函数很容易定义......
我知道Golang支持传统的值传递,并使用Go样式指针传递引用.
如上面的Stroustrup所描述的那样,Go是否像C++ 11一样支持"移动语义",以避免来回无用的复制?如果是这样,这是自动的,还是要求我们在代码中做一些事情来实现它.
注意:已经发布了一些答案 - 我必须消化它们,所以我还没有接受一个 - 谢谢.
我想声明一个map看起来像这样的东西,所以我可以将各种init函数映射到initType:
func makeMap(){
m := make(map[initType]&InitFunc)
//How should the value declaration be set up for this map?
}
type initType int
const(
A initType = iota
B
C
D
)
func init(aInitType initType){
doStuff(aInitType)
}
func init(aInitType initType){
doOtherStuff(aInitType)
}
func init(aInitType initType){
doMoreStuff(aInitType)
}
Run Code Online (Sandbox Code Playgroud)
如何声明函数指针类型(我在示例中调用了&InitFunc,因为我不知道如何操作)所以我可以将它用作Map中的值?