我目前使用以下函数来注册处理上下文菜单调用的DLL.
function RegisterLibrary(szLibrary: String): Integer;
var
hLib: THandle;
drs: TDllRegisterServer;
begin
// Attempt to load the library
hLib := LoadLibrary(PChar(szLibrary));
// Handle check
if IsHandle(hLib) then
begin // Get the register function
@drs := GetProcAddress(hLib, LIB_REGISTER);
if Assigned(@drs)
then Result := drs // Make the function call
else Result := GetLastError; // Return last error
// Unload the library
FreeLibrary(hLib);
end else
Result := GetLastError; // Return last error
end;
Run Code Online (Sandbox Code Playgroud)
不幸的是,当尝试从我的32位应用程序注册64位dll时,它不起作用.
有没有办法从我的32位应用程序(用Delphi编译)注册我的64位dll(用free pascal编译)?
我想我可以调用C:\ Windows\system\regsvr32.exe"/ s"filename"但想知道我是否还有其他选择.
谢谢!
是否有任何简单的方法(通过一个脚本)来获取从Windows 2008 Server上的NIC发送和接收的累积字节?
例如,NIC当前显示大约18 MB的已发送数据和765 MB的已接收数据.
由于我的服务器提供商不提供查看每月带宽使用情况的简便方法,因此获取NIC数据似乎是最可靠的.
我知道我可以使用PRTG通过SNMP获取当前的使用数据,但它只是平均值,因为传感器每60秒检查一次.
我有一组数据需要在设计时存储,以便在运行时构造一组组件的内容.
像这样的东西:
type
TVulnerabilityData = record
Vulnerability: TVulnerability;
Name: string;
Description: string;
ErrorMessage: string;
end;
Run Code Online (Sandbox Code Playgroud)
在设计时存储这些数据以便以后在运行时检索的最佳方法是什么?我将有大约20条记录,我知道每条"记录"的所有内容,但我坚持认为存储数据的最佳方式.
我提出的唯一半优雅的想法是"构建"单元初始化的每条记录,如下所示:
var
VulnerabilityData: array[Low(TVulnerability)..High(TVulnerability)] of TVulnerabilityData;
....
initialization
VulnerabilityData[0].Vulnerability := vVulnerability1;
VulnerabilityData[0].Name := 'Name of Vulnerability1';
VulnerabilityData[0].Description := 'Description of Vulnerability1';
VulnerabilityData[0].ErrorMessage := 'Error Message of Vulnerability1';
VulnerabilityData[1]......
.....
VulnerabilityData[20]......
Run Code Online (Sandbox Code Playgroud)
是否有比这更好和/或更优雅的解决方案?
感谢您阅读以及您可能提供的任何见解.
我想创建一个类似下面的图像(我知道是使用TVirtualStringTree完成的),但我还没有找到任何关于如何实现此目的的示例代码.
任何人都知道如何在下面的示例中使用多行项目,并"展开"选择项目以显示更多行?
我正在慢慢将现有代码转换为Delphi 2010,并阅读Embarcaedro网站上的几篇文章以及MarcoCantú白皮书.
还有一些我还没有理解的东西,所以这里有两个函数来举例说明我的问题:
function RemoveSpace(InStr: string): string;
var
Ans : string;
I : Word;
L : Word;
TestChar: string[1];
begin
Ans := '';
L := Length(InStr);
if L > 0 then
begin
for I := 1 to L do
begin
TestChar := Copy(InStr, I, 1);
if TestChar <> ' ' then Ans := Ans + TestChar;
end;
end;
RemoveSpace := Ans;
end;
function ReplaceStr(const S, Srch, Replace: string): string;
var
I: Integer;
Source: string;
begin
Source := S;
Result := …Run Code Online (Sandbox Code Playgroud) 我有以下代码处理选项卡中的单击并通过ajax加载内容:
$(document).ready(function()
{
$("#tab1").click(function()
{
loadTab($(this).attr("href") + "?ajax=1");
return false; // cancel the event
});
$("#tab2").click(function()
{
loadTab($(this).attr("href") + "?ajax=1");
return false; // cancel the event
});
$("#tab3").click(function()
{
loadTab($(this).attr("href") + "?ajax=1");
return false; // cancel the event
});
$("#tab4").click(function()
{
loadTab($(this).attr("href") + "?ajax=1");
return false; // cancel the event
});
});
Run Code Online (Sandbox Code Playgroud)
您会注意到有很多重复的代码.
有没有办法将#tab1,#tab2,....分组为单个.click(function()?
我有一个计算注册表项的函数,并添加了一个新选项来检索注册表项名称和值.不幸的是,我似乎无法理解为什么只检索每个注册表项的第一项以及为什么这些值都具有相同的名称.
有人看到下面的代码有任何明显的问题吗?
function CountRegistryItems(Root: HKEY; SubKey: string; var KeysCount: Integer;
var ValuesCount: Integer; GetValues: Boolean; const List: TStrings): Boolean;
type
TRegKeyInfo = record
NumSubKeys: Integer;
MaxSubKeyLen: Integer;
NumValues: Integer;
MaxValueLen: Integer;
MaxDataLen: Integer;
FileTime: TFileTime;
end;
var
Info: TRegKeyInfo;
i: integer;
SL: TStringList;
Status: Integer;
Key: HKEY;
Len: DWORD;
S: string;
PartialKeysCount: Integer;
PartialValuesCount: Integer;
KeyType, MaxValLen, MaxValNameLen, ValNameLen, ValLen: Cardinal;
ValName, Val: PChar;
Size: DWORD;
ValueName: string;
begin
KeysCount := 0;
ValuesCount := 0;
Result := False;
if GetValues …Run Code Online (Sandbox Code Playgroud)