小编Sal*_*dor的帖子

使用Delphi和Indy通过Progress事件以编程方式从Internet下载文件

我需要一种通过HTTP使用Delphi从Internet下载文件的方法,其中包括Progress事件,我正在寻找一种使用Indy组件的方法.

我使用的是Delphi 7.

delphi indy download delphi-7

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

这是等待Thread.finalization并保持我的应用程序响应的正确方法

实际上我使用这个代码并且工作正常,但我想知道是否是正确的方法.

  while WaitForSingleObject(MyThread.Handle, 0) = WAIT_TIMEOUT do
    Application.ProcessMessages;

  ShowMessage('i am done');
Run Code Online (Sandbox Code Playgroud)

delphi multithreading waitforsingleobject

13
推荐指数
2
解决办法
9437
查看次数

如何在没有TWebBrowser的情况下在我的Delphi程序中执行Javascript?

我正在使用一个使用Javascript接口发出请求的Web API,响应是通过回调Javascript函数.有没有办法从Delphi调用Javascript代码而不使用TWebBrowser组件?

javascript delphi

13
推荐指数
1
解决办法
7712
查看次数

我如何将vcl样式应用于TPopupmenu?

我在Delphi XE2应用程序中使用vcl样式,但是当我弹出TPopupmenu这是使用本机windows外观和感觉显示时,是否有任何方法将vcl样式颜色应用于TPopUpMenu?

在此输入图像描述

delphi delphi-xe2 vcl-styles

13
推荐指数
1
解决办法
858
查看次数

如何使用delphi提高WMI性能?

我写了一个简单的函数来使用WMI检索系统信息,将类和属性名称作为参数传递.当我执行这样的功能

  Writeln('Procesor Id '+GetWMIInfo('Win32_Processor','Name'));
  Writeln('Mother Board Serial '+GetWMIInfo('Win32_BaseBoard','SerialNumber'));
  Writeln('BIOS Version '+GetWMIInfo('Win32_BIOS','Version'));
Run Code Online (Sandbox Code Playgroud)

执行时间约为1300毫秒.

我需要检索很多额外的信息,那么可能减少执行这个功能的时间吗?

这是一个带有该功能的示例应用程序

{$APPTYPE CONSOLE}

uses
  Diagnostics,
  SysUtils,
  ActiveX,
  ComObj,
  Variants;

function  GetWMIInfo(const WMIClass, WMIProperty:string): string;
var
  sWbemLocator  : OLEVariant;
  sWMIService   : OLEVariant;
  sWbemObjectSet: OLEVariant;
  sWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
begin;
  Result:='';
  sWbemLocator  := CreateOleObject('WbemScripting.SWbemLocator');
  sWMIService   := sWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
  sWbemObjectSet:= sWMIService.ExecQuery('SELECT * FROM '+WMIClass,'WQL');
  oEnum         := IUnknown(sWbemObjectSet._NewEnum) as IEnumVariant;
  if oEnum.Next(1, sWbemObject, iValue) = 0 then
    Result:=sWbemObject.Properties_.Item(WMIProperty).Value;
end;

var
 SW : TStopwatch;

begin …
Run Code Online (Sandbox Code Playgroud)

delphi wmi

13
推荐指数
1
解决办法
3664
查看次数

Delphi跨平台应用程序中哪个XML文件库?

我正在编写一个FireMonkey应用程序,它必须在Windows中以及OSX中运行.到目前为止,我已经将MSXML用于我的Windows应用程序,但当然这个库与OSX不兼容.所以问题是,Delphi XE2是否包含与OSX兼容的任何XML库,或者是否存在与OSX兼容的第三方XML库?

xml delphi delphi-xe2

12
推荐指数
1
解决办法
2360
查看次数

如何检测到TadoConnection丢失了与服务器的通信?

我需要检测TAdoConnection组件何时丢失与服务器的连接.我尝试过使用OnDisconnect事件,但这仅在调用Close方法或Connected属性设置为false时触发.

我尝试过的另一个选择是使用TTimer并执行这样的查询

SELECT 1 RESULT FROM DUAL
Run Code Online (Sandbox Code Playgroud)

在OnTimer事件中,捕获发生的任何异常.

有没有更好的选择来检测连接丢失?

delphi ado

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

使用delphi从PID获取完整路径

我需要从PID获得完整路径.

我已经检查了这个问题C++ Windows - 如何从其PID获取进程路径 ,我编写了以下代码:

 function GetFullPathFromPID(PID: DWORD): string;
 var
    hProcess: THandle;
    ModName : Array[0..MAX_PATH + 1] of Char;
 begin
   Result:='';
    hProcess := OpenProcess(PROCESS_ALL_ACCESS,False, PID);
    try
      if hProcess <> 0 then
       if GetModuleFileName(hProcess, ModName, Sizeof(ModName))<>0 then
         Result:=ModName
        else
         ShowMessage(SysErrorMessage(GetLastError));
    finally
     CloseHandle(hProcess);
    end;
 end;
Run Code Online (Sandbox Code Playgroud)

但总是返回此消息:

指定的模块无法找到

如何从PID中获取完整路径?

delphi delphi-xe

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

如何仅在调试模式下激活ReportMemoryLeaksOnShutdown?

我需要激活ReportMemoryLeaksOnShutdown功能来报告我的应用程序的内存泄漏,但只能在调试模式下(当Delphi IDE运行时).我怎样才能做到这一点?

delphi

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

哪个是C#声明相当于delphi"class of"(类的类型)?

在Delphi中我可以声明一个类的类型,像这样

type
  TFooClass = class of TFoo;
  TFoo=class
  end;
Run Code Online (Sandbox Code Playgroud)

这个声明的C#等价物是什么?

c# delphi

11
推荐指数
1
解决办法
1028
查看次数