我正在尝试创建一个泛型类,我可以使用一组枚举来启动内部的值.例如:
constructor TManager<TEnum>.Create;
var
enum: TEnum;
enumObj: TMyObject;
begin
fMyObjectList:= TObjectDictionary<TEnum,TMyObject>.Create([doOwnsValues],10);
for enum:= Low(TEnum) to High(TEnum) do
begin
enumObj:= TMyObject.Create();
fMyObjectList.Add(enum, enumObj);
end;
end;
Run Code Online (Sandbox Code Playgroud)
此外,以后的方法将通过枚举值获取对象,例如:
function TManager<TEnum>.Fetch(enum: TEnum): TMyObject;
begin
fMyObjectList.TryGetValue(enum, Result);
end;
Run Code Online (Sandbox Code Playgroud)
但是,作为通用参数传递,delphi不知道TEnum将是一个枚举.我能以某种方式强制执行吗?
我正在生成电子邮件.它们在gmail和Outlook 2010中对我来说很好.但是,我的客户端看到=符号会被引用的可打印格式添加到行尾.它还会占用下一行的字符,但随后显示等号.
例:
line that en=
ds like this
Run Code Online (Sandbox Code Playgroud)
显示出来
line that en=s like this
Run Code Online (Sandbox Code Playgroud)
(注意:我的电子邮件中的EOL字符只是LF.没有CR.)
我正在确认我的客户端使用的Outlook版本,但我认为它是2007年.来自她的电子邮件标题似乎来自Exchange 6.5.
我的电子邮件是使用HtmlMimeMail5库在php中创建的.它们是多部分电子邮件,适用的部分发送时间:
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Run Code Online (Sandbox Code Playgroud)
看来我可以确保我的电子邮件中没有任何内容达到76个字符的换行符,但这似乎是解决问题的错误方法.EOL角色应该不同吗?(在来自客户端的电子邮件中,EOL角色只是一个LF)其他任何想法?
我已经搜索和搜索,但无法找到如何在Delphi中获取查询的进度.我已经找到了Advantage .NET数据提供程序的一些信息,但可以使用Delphi的一些帮助.
我正在捕获异常,对于该类中的特定异常类和错误代码,我会进行一些自定义处理.对于所有其他异常,我想使用通用错误处理程序.像这样:
on E:EADSDatabaseError do
begin
case E.ACEErrorCode of
5132:
begin
//Custom handling
end;
else
begin
raise;
end;
end;
end;
on E:Exception do
begin
//usual handling
end;
Run Code Online (Sandbox Code Playgroud)
对于原始错误中的大多数代码,我想通过一般错误处理程序.但是,重新加载它似乎不允许触发更一般的异常类处理程序.(我不确定我会期待它.我以前从未做过这种事.)
有两个人是我最好的选择try/excepts吗?
我有一个与优势数据库一起使用的Windows服务,偶尔会进行一些http调用.在极少数情况下,这些电话可能会很长.调整我的数据库连接超时.我没有使用数据模块或任何东西.只需手动创建连接.
我的主要问题是,如果我暂时没有使用它,通常会阻止连接超时?TAdsComponents是否会以某种方式发送在后台调用的保持活动消息?这是依赖于vcl所以我在服务中没有这个吗?不知何故,我觉得创建一个线程来进行我的http调用,并且在主线程中检查它每隔几秒钟完成一次会阻止连接死亡.这是真的吗?
我保留了一个Advantage TAdsConnection对象池并按要求将它们移出.偶尔我得到一个导致6610错误,我假设因为它处于空闲状态并且连接被重置.我可以运行任何旧查询并捕获6610,但这是一个漫长的等待特定错误.
在我将优惠连接传回原状之前,是否有一种检查优势连接健康状况的好方法?
我有一个运行长操作的模型对象.我正在尝试在线程中运行其中一些操作以保持接口响应,一次下载2件事等,但我想尽可能地从接口代码中隐藏这些细节.我正在尝试使用AsyncCall库,但有问题.
type EUpdaterAction = (auFoundCurrentVersion, auFoundUpdateVersion);
type
TUpdater = class
public
procedure loadCurrentVersion();
procedure notify(action: EUpdaterAction);
end;
procedure TUpdater.loadCurrentVersion();
begin
TAsyncCalls.Invoke(procedure
begin
Assert(Windows.GetCurrentThreadId() <> System.MainThreadID);
//Really long code
TAsyncCalls.VCLSync(procedure begin notify(auFoundCurrentVersion); end);
end);
end;
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,KeyDown事件不能阻止字符键(空格)传递给控件.
但KeyPress事件并没有告诉我Ctrl是否已关闭.
但是如果Ctrl关闭,我只需要取消空格.
如果ctrl也关闭,如何阻止编辑控件接收空格键?
目的:我有一个文本框,我正在从中提出搜索建议.我想使用快捷键ctrl + space弹出建议.但在这种情况下,我不想在编辑文本中添加空格.
delphi ×7
delphi-2010 ×2
asynchronous ×1
delphi-xe ×1
delphi-xe4 ×1
email ×1
enums ×1
generics ×1