我需要一种通过HTTP使用Delphi从Internet下载文件的方法,其中包括Progress事件,我正在寻找一种使用Indy组件的方法.
我使用的是Delphi 7.
实际上我使用这个代码并且工作正常,但我想知道是否是正确的方法.
while WaitForSingleObject(MyThread.Handle, 0) = WAIT_TIMEOUT do
Application.ProcessMessages;
ShowMessage('i am done');
Run Code Online (Sandbox Code Playgroud) 我正在使用一个使用Javascript接口发出请求的Web API,响应是通过回调Javascript函数.有没有办法从Delphi调用Javascript代码而不使用TWebBrowser
组件?
我在Delphi XE2应用程序中使用vcl样式,但是当我弹出TPopupmenu这是使用本机windows外观和感觉显示时,是否有任何方法将vcl样式颜色应用于TPopUpMenu?
我写了一个简单的函数来使用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) 我正在编写一个FireMonkey应用程序,它必须在Windows中以及OSX中运行.到目前为止,我已经将MSXML用于我的Windows应用程序,但当然这个库与OSX不兼容.所以问题是,Delphi XE2是否包含与OSX兼容的任何XML库,或者是否存在与OSX兼容的第三方XML库?
我需要检测TAdoConnection组件何时丢失与服务器的连接.我尝试过使用OnDisconnect事件,但这仅在调用Close方法或Connected属性设置为false时触发.
我尝试过的另一个选择是使用TTimer并执行这样的查询
SELECT 1 RESULT FROM DUAL
Run Code Online (Sandbox Code Playgroud)
在OnTimer事件中,捕获发生的任何异常.
有没有更好的选择来检测连接丢失?
我需要从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中获取完整路径?
我需要激活ReportMemoryLeaksOnShutdown
功能来报告我的应用程序的内存泄漏,但只能在调试模式下(当Delphi IDE运行时).我怎样才能做到这一点?
在Delphi中我可以声明一个类的类型,像这样
type
TFooClass = class of TFoo;
TFoo=class
end;
Run Code Online (Sandbox Code Playgroud)
这个声明的C#等价物是什么?
delphi ×10
delphi-xe2 ×2
ado ×1
c# ×1
delphi-7 ×1
delphi-xe ×1
download ×1
indy ×1
javascript ×1
vcl-styles ×1
wmi ×1
xml ×1