我在安装Delphi 2007后遇到错误(编辑:这个问题发生在2006年到2010年的所有Delphi版本中),我无法弄清楚,以前从未见过.重新启动后,我可以毫无问题地启动程序,但如果我要关闭程序并重新启动它会给我以下错误:
"无法创建文件C:\ Users\Admin\AppData\Local\Temp\EditorLineEnds.ttr".该进程无法访问该文件,因为它正由另一个进程使用."
"System"具有此文件的句柄,除非我重新启动,否则无法清除该句柄.我也可以通过在启动程序之前重命名文件来解决问题.
我试过没有运气重新安装程序.
安装版本:CodeGear™Delphi®2007forWin32®R2版本11.0.2902.10471.操作系统:Windows 7 Pro 64bit
更新08/14 13:35 EDT 尝试了以下解决方案,但仍然遇到相同的文件锁定问题:
我将尝试从头开始重新安装Windows并在Windows更新之前安装Delphi,以查看更新是否真的是原因.我现在的解决方法是在启动Delphi之前重命名EditorLineEnds.ttr.
我将Windows服务的恢复配置为在故障后延迟一分钟重新启动.但我从来没有得到它实际重启服务(即使有最明显的错误).
我在EventViewer中收到一条消息:
无法找到源(MyApp.exe)中的事件ID(1)的说明.本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息.您可以使用/ AUXSOURCE =标志来检索此描述; 请参阅帮助和支持以获取详细信 以下信息是事件的一部分:模块"MyApp.exe"中地址00429874处的访问冲突.写地址00456704.
我还有别的办法吗?我的代码中有什么东西(我使用Delphi)需要设置才能启用它吗?
我正在尝试支持"混合"联合登录和oAuth2(使用本文档中的逻辑)的Web服务,该服务将:
以下是我所做的步骤.
问题:如果我在我的Google帐户中转到授权访问您的Google帐户部分,则表明我的网站可以访问"Google Analytics.但是,它没有说使用您的Google帐户登录.这就是我想要的我认为使用逻辑会启用使用您的Google帐户登录.我做错了什么?谷歌的适用电话是什么,以便用户可以登录我的网站?
我有在服务和VCL表单应用程序(win32应用程序)中使用的代码.如何确定底层应用程序是作为NT服务还是作为应用程序运行?
谢谢.
我使用Indy TIdhttp组件构建了一个简单的网站监控应用程序.我想检测何时在指定的时间范围内没有返回指定的页面(我使用5000毫秒).作为测试,我在网站上创建了一个页面,故意需要15秒才能响应.但是我不能让我的程序在5秒后"放弃".我尝试过ReadTimeout,一个使用计时器和OnWorkBegin事件的建议解决方案(在get调用之后永远无法让OnWorkBegin立即触发).
注意我并不担心连接超时.我担心的是服务器返回页面的超时.
这是我一直在使用的一些源代码.它包含我引用的许多元素.
procedure TServLogic.WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
GetTimer.Enabled := True;
end;
procedure TServLogic.WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
GetTimer.Enabled := False;
end;
procedure TServLogic.GetTimerTimer(Sender: TObject);
begin
idHttp.Disconnect(True);
end;
procedure TServLogic.CallHttp(mlink: String): String;
begin
result := '';
GetTimer := TTimer.create(nil);
GetTimer.OnTimer := GetTimerTimer;
GetTimer.Interval := 5000;
try
IdHTTP := TIdHTTP.create(nil);
idhttp.ReadTimeout := 5000;
IdHttp.OnWorkBegin := WorkBegin;
IdHttp.OnWorkEnd := WorkEnd;
try
result := idhttp.get(mLink);
except
on e:exception do begin …Run Code Online (Sandbox Code Playgroud) 是否有内置的Delphi函数可以将诸如'3,232.00'之类的字符串转换为float?由于逗号,StrToFloat引发异常.或者是首先删除逗号然后执行StrToFloat的唯一方法?
谢谢.
对于具有相同where子句的查询,我发现select count(*)比select*花费的时间要长得多.
该表有大约220万条记录(称之为详细信息表).它有一个链接到另一个表(维护)的外键字段.
此查询大约需要10-15秒:
select count(*) from detailtable where maintableid = 999
Run Code Online (Sandbox Code Playgroud)
但这需要一秒钟或更短时间:
select * from detailtable where maintableid = 999
Run Code Online (Sandbox Code Playgroud)
更新 - 有人要求指明所涉及的记录数量.这是150.
更新2以下是使用EXPLAIN关键字时的信息.
对于SELECT COUNT(*),EXTRA列报告:
Using where; Using index
Run Code Online (Sandbox Code Playgroud)
KEY和POSSIBLE KEYS都有外键约束作为它们的值.
对于SELECT*查询,除了EXTRA之外,一切都是相同的:
Using Where
Run Code Online (Sandbox Code Playgroud)
更新3尝试OPTIMIZE TABLE,它仍然没有什么区别.
我已经使用IdTCPServer组件创建了一个Client/Server应用程序.客户端在应用程序的整个生命周期中连接并维护持久连接.如果网络连接断开(由于客户端连接无线机卡而频繁发生),客户端将自动重新连接.一切正常.
我的问题是处理服务器上与丢失连接相对应的套接字.它们不检测网络丢失并断开连接.在阅读了几篇相关文章之后,我了解到服务器无法知道连接是否被丢弃.它必须等待一些事件才能找到它.
所以我的问题是,我是否应该在我的服务器中构建一些机制来定期"处理"带有连接断开的套接字?如果是这样,怎么样?我认为一种方法是循环遍历所有连接并尝试向它们发送数据.我发现这将触发所需的"事件".
我开发了一个客户/服务器类型的应用程序.XML数据在客户端和服务器之间传递.我想模拟它如何在一个非常慢的网络上运行(即无线电@ 9.6kps).据我所知,Fiddler可用于模拟调制解调器速度模式.但无论我做什么,我都无法配置Fiddler接受来自客户端的流量并将其重定向到服务器.我也尝试了"反向代理".
Fiddler是否使用HTTP以外的协议?
您可以使用Process Explorer程序查看运行应用程序的句柄数.有没有办法用Delphi代码来获取这个数字?我有兴趣跟踪应用程序本身的编号; 不要像Process Explorer那样找到其他应用程序使用的句柄数.
我的目的是让应用程序跟踪/检测可能的资源泄漏.
delphi ×6
windows ×2
access-token ×1
delphi-2006 ×1
delphi-2007 ×1
delphi-2009 ×1
delphi-2010 ×1
fiddler ×1
google-api ×1
handle ×1
indy ×1
indy10 ×1
mysql ×1
oauth ×1
openid ×1
regional ×1
tcp ×1
vcl ×1
winapi ×1