小编Edw*_*Yip的帖子

'cdecl = nil'(放在函数声明后)是什么意思?

从优秀的Detour库中查看此演示源:

implementation

{$R *.dfm}

var
  TrampolineGetMemory: function(Size: NativeInt): Pointer;
cdecl = nil;
Run Code Online (Sandbox Code Playgroud)

请看一下cdecl = nil;声明.在这种情况下它意味着什么?

注意 - 我已经知道它cdecl代表一个调用约定.

delphi

5
推荐指数
2
解决办法
169
查看次数

将XML字符串存储为JSON属性的正确可靠方法是什么?

我想将本身就是XML字符串的字符串存储为JSON对象的属性,将其转换为可靠正确的方法是什么?由于JSON不支持二进制数据,我是否应该先将XML数据编码为BASE64,然后再保存为JSON对象?

我要存储的数据示例:

{ 
"string1" : "<xml>...moderately complex XML...</xml>" 
} 
Run Code Online (Sandbox Code Playgroud)

xml json

4
推荐指数
1
解决办法
2666
查看次数

防止整个屏幕更新

编辑1:实际上,我只是想避免因关闭Word文档并打开另一个文档而导致的闪烁.但现在看来这种方法并不可行.

问候,是否可以防止整个屏幕(不仅是桌面)更新?问题来自这一个问题.我想要做的是,在我的Word加载项中,当我关闭Word文档并打开另一个文档时,锁定整个屏幕更新,并在完成后重新启用更新.

一个想法是:

  1. 获取整个屏幕的图像(如何?);
  2. 显示最顶层的窗口以显示在步骤1中捕获的屏幕图像,以覆盖整个屏幕;
  3. 完成我的工作,完成后关闭最顶层的窗口.

可能吗?或者你有其他更好的想法吗?谢谢!

windows delphi winapi

4
推荐指数
1
解决办法
282
查看次数

Delphi-编译的EXE的图标错误,无法更改

我在15年来使用Delphi的经历中第一次遇到这个奇怪的问题。这是我在项目选项(XE4)中设置的图标: 在此处输入图片说明

这是编译后生成的应用程序图标:

在此处输入图片说明

我不知道该图标来自何处,也无法更改该图标(这确实使我发疯了)。

直到今天晚些时候,这个项目的图标已经可以使用了一年多。我尝试过的没有运气的事情:

  • 使用“加载图标...”按钮将其更改为另一个完全不同的图标,然后重新构建。
  • 使用“默认”按钮重置为默认图标并重新构建。
  • 删除project1.res文件并重新生成。
  • 删除.dproj文件,打开.dpr文件,然后让Delphi IDE创建一个空白的新.dproj文件。没运气。
  • 我以为是Windows 7的IconCache.db文件损坏,删除了该文件,然后重新启动Windows,无济于事。实际上,我使用Resource Hacker来确认不是Windows资源管理器显示了错误的图标,而是EXE中的图标资源是错误的……太奇怪了。
  • .dproj文件从SVN 恢复到昨天(图标在昨天还可以)的修订,没有运气。

您还建议我尝试一下吗?谢谢!

delphi resources icons delphi-xe4

4
推荐指数
1
解决办法
200
查看次数

为什么一个类需要一个空方法来调用它?

我正在为Delphi评估现有的依赖注入库,并且由于其简单性而确定了这个delphidicontainer - 它只需要一个单元文件!

但是,有一件事我不明白 - 在这个示例文件的底部:

initialization
//with those lines the linked will include the actual code for the services
TCSVDataService.Register;
TPaddedDataService.Register;
Run Code Online (Sandbox Code Playgroud)

这些Register方法是空的,但是,如果我在初始化部分中注释掉这两行,DIContainer.Get('dataservice') as TDataService则会失败.

为什么?这些方法是什么?

delphi

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

如何使div始终位于浏览器窗口的最左侧?

我想让div在浏览器窗口的最左侧一直显示,],你能给我一些提示吗?

javascript css

2
推荐指数
1
解决办法
4776
查看次数

GlobalAlloc导致我的Delphi应用程序挂起?

我想使用我刚刚编写的以下函数将字符串值转换为全局内存句柄,反之亦然.

但是StrToGlobalHandle()导致我的测试程序挂起.所以GlobalHandleToStr()是不可测试的,我也想知道我的代码是否合乎逻辑.

function StrToGlobalHandle(const aText: string): HGLOBAL;
var
  ptr: PChar;
begin
  Result := 0;
  if aText <> '' then
  begin
    Result := GlobalAlloc(GMEM_MOVEABLE or GMEM_ZEROINIT, length(aText) + 1);
    if Result <> 0 then
    begin
      ptr := GlobalLock(Result);
      if Assigned(ptr) then
      begin
        StrCopy(ptr, PChar(aText));
        GlobalUnlock(Result);
      end
    end;
  end;
end;

function GlobalHandleToStr(const aHandle: HGLOBAL): string;
var
  ptrSrc: PChar;
begin
  ptrSrc := GlobalLock(aHandle);
  if Assigned(ptrSrc) then
  begin
    SetLength(Result, Length(ptrSrc));
    StrCopy(PChar(Result), ptrSrc);
    GlobalUnlock(aHandle);
  end
end;
Run Code Online (Sandbox Code Playgroud)

测试代码:

procedure TForm3.Button1Click(Sender: TObject);
var …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

2
推荐指数
1
解决办法
998
查看次数

Delphi XE4 IDE,如何始终隐藏Object Inspector的底部窗格

位于Obeject Inspector底部的两个窗格根本没用,而且它不必要地消耗屏幕,如下面的屏幕截图所示.如何在重新启动IDE后禁用这两个窗格?内置选项或第三方插件对我来说没问题.谢谢. 在此输入图像描述

delphi delphi-ide delphi-xe4

2
推荐指数
1
解决办法
213
查看次数

Delphi XE4,wParam for TControl.Perform()只接受unsigned int?

在Delphi7中,TControl.Perform()接受负值wParam参数,这是它是如何应该做的,因为例如,EM_LINEFROMCHAR WINAPI消息所期望-1wParam.

但是在Delphi XE4下,数据类型wParam已更改为NativeUInt,这将不接受负整数.

这是Delphi RTL的一个错误,或者我错误地理解它?谢谢.

delphi delphi-xe4

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

通过文件扩展名获取扩展名和图标的最快方法?

有几种方法可以获取给定扩展的描述和默认图标(没有完整路径),例如"*.doc"我想获得"Microsoft Word文档"和相关图标,您认为这将是最快的以下之一:

  1. 搜索注册表:

    • 在注册表中,转到"HKCR.{extension}",读取默认值(让我们称之为文件类型)
    • 在"HKCR {filetype}\DefaultIcon"中,读取默认值:这是图标文件的路径(或图标容器文件,如带有嵌入图标资源的.exe)
    • 如果需要,请使用从首先提到的文件中提取图标资源的首选方法.
  2. 调用API ShGetFileInfo.我相信这有点慢.

  3. 根据Rob的说法,这里:如何使用Delphi从文件扩展名中获取图标和描述?

将IExtractIcon接口称为"更灵活,更高效"的替代方案.但它建议的顺序是使用IShellFolder接口,然后调用GetUIObjectOf获取文件的IExtractIcon接口,然后调用GetIconLocation和Extract来检索图标的句柄.(但是这个方法无法读取扩展描述?)

由于速度非常重要,因为我需要读取系统中所有文件类型的信息.

非常感谢你!

windows-shell

0
推荐指数
1
解决办法
2424
查看次数