小编M S*_*kel的帖子

Delphi 2006-2010错误:"无法创建文件C:\ Users\Admin\AppData\Local\Temp\EditorLineEnds.ttr"

我在安装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 尝试了以下解决方案,但仍然遇到相同的文件锁定问题:

  1. 将Temp Directory重命名为我知道具有完全安全权限的目录.启动Delphi时,文件将在此目录中创建,但是EditorLineEnds.ttr仍然会被SYSTEM锁定并阻止我重新启动.
  2. 卸载了以下安全更新KB2982791和KB2976897,但这并没有解决问题.我暂时禁止了Windows更新,并尝试卸载8/13的所有安全补丁.
  3. 完全卸载Delphi并重新安装.重新安装所有内容后仍然会出现问题.

我将尝试从头开始重新安装Windows并在Windows更新之前安装Delphi,以查看更新是否真的是原因.我现在的解决方法是在启动Delphi之前重命名EditorLineEnds.ttr.

delphi delphi-2009 delphi-2007 delphi-2006 delphi-2010

54
推荐指数
2
解决办法
8万
查看次数

Windows服务恢复未重新启动服务

我将Windows服务的恢复配置为在故障后延迟一分钟重新启动.但我从来没有得到它实际重启服务(即使有最明显的错误).

我在EventViewer中收到一条消息:

无法找到源(MyApp.exe)中的事件ID(1)的说明.本地计算机可能没有必要的注册表信息或消息DLL文件来显示来自远程计算机的消息.您可以使用/ AUXSOURCE =标志来检索此描述; 请参阅帮助和支持以获取详细信 以下信息是事件的一部分:模块"MyApp.exe"中地址00429874处的访问冲突.写地址00456704.

我还有别的办法吗?我的代码中有什么东西(我使用Delphi)需要设置才能启用它吗?

windows windows-services

20
推荐指数
2
解决办法
2万
查看次数

初始身份验证后执行Google Federated Login/oAuth2

我正在尝试支持"混合"联合登录和oAuth2(使用本文档中的逻辑)的Web服务,该服务将:

  1. 支持使用我网站上的Google帐户登录.也就是说,从文档中:您还可以选择使用Google的身份验证系统来为您的应用程序外包用户身份验证.这可以消除创建,维护和保护用户名和密码存储的需要.
  2. 访问用户的Google Analytics.

以下是我所做的步骤.

  1. 我向https://accounts.google.com/o/oauth2/auth提出了我想要访问的范围(Google Analytics)的请求.
  2. 我被重定向到谷歌,它有我的图标和我请求访问的范围.我授予访问权限.
  3. 我被重定向回到回调页面.
  4. 我得到的令牌(访问和刷新),以及一个巨大的id_token字符串(我不知道),所有这些信息存储在我的数据库.
  5. 然后,我打电话给https://www.googleapis.com/oauth2/v1/userinfo?access_token=xxxyyyzzz获取用户的电子邮件和姓名,并将此信息存储在我的数据库中.我还注意到它返回一个id字段,据我所知,它永远不会改变,我认为是某种独特的标识符.我也存储了这个.

问题:如果我在我的Google帐户中转到授权访问您的Google帐户部分,则表明我的网站可以访问"Google Analytics.但是,它没有说使用您的Google帐户登录.这就是我想要的我认为使用逻辑会启用使用您的Google帐户登录.我做错了什么?谷歌的适用电话是什么,以便用户可以登录我的网站?

openid oauth google-api access-token

14
推荐指数
1
解决办法
1070
查看次数

确定是否作为VCL表单或服务运行

我有在服务和VCL表单应用程序(win32应用程序)中使用的代码.如何确定底层应用程序是作为NT服务还是作为应用程序运行?

谢谢.

delphi vcl

12
推荐指数
5
解决办法
3537
查看次数

有没有办法为Indy Tidhttp设置响应超时?

我使用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 indy

11
推荐指数
2
解决办法
2万
查看次数

将带逗号的字符串转换为float

是否有内置的Delphi函数可以将诸如'3,232.00'之类的字符串转换为float?由于逗号,StrToFloat引发异常.或者是首先删除逗号然后执行StrToFloat的唯一方法?

谢谢.

delphi regional

10
推荐指数
3
解决办法
4万
查看次数

对于相同的"where"子句,select count(*)比select*长得多

对于具有相同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)

KEYPOSSIBLE KEYS都有外键约束作为它们的值.

对于SELECT*查询,除了EXTRA之外,一切都是相同的:

Using Where
Run Code Online (Sandbox Code Playgroud)

更新3尝试OPTIMIZE TABLE,它仍然没有什么区别.

mysql

10
推荐指数
1
解决办法
785
查看次数

如何处理网络丢弃和Indy IdTCPServer

我已经使用IdTCPServer组件创建了一个Client/Server应用程序.客户端在应用程序的整个生命周期中连接并维护持久连接.如果网络连接断开(由于客户端连接无线机卡而频繁发生),客户端将自动重新连接.一切正常.

我的问题是处理服务器上与丢失连接相对应的套接字.它们不检测网络丢失并断开连接.在阅读了几篇相关文章之后,我了解到服务器无法知道连接是否被丢弃.它必须等待一些事件才能找到它.

所以我的问题是,我是否应该在我的服务器中构建一些机制来定期"处理"带有连接断开的套接字?如果是这样,怎么样?我认为一种方法是循环遍历所有连接并尝试向它们发送数据.我发现这将触发所需的"事件".

delphi tcp indy10

8
推荐指数
1
解决办法
1265
查看次数

Fiddler可以监控除HTTP之外的流量

我开发了一个客户/服务器类型的应用程序.XML数据在客户端和服务器之间传递.我想模拟它如何在一个非常慢的网络上运行(即无线电@ 9.6kps).据我所知,Fiddler可用于模拟调制解调器速度模式.但无论我做什么,我都无法配置Fiddler接受来自客户端的流量并将其重定向到服务器.我也尝试了"反向代理".

Fiddler是否使用HTTP以外的协议?

fiddler

7
推荐指数
0
解决办法
2714
查看次数

如何获取属于某个进程的已打开句柄的数量?

您可以使用Process Explorer程序查看运行应用程序的句柄数.有没有办法用Delphi代码来获取这个数字?我有兴趣跟踪应用程序本身的编号; 不要像Process Explorer那样找到其他应用程序使用的句柄数.

我的目的是让应用程序跟踪/检测可能的资源泄漏.

windows delphi winapi handle window-handles

7
推荐指数
1
解决办法
3729
查看次数