小编Cha*_*ang的帖子

如何测试应用程序(.exe)是否使用运行时包构建

如果我的.exe Delphi应用程序是使用运行时包构建的,还是单个.exe,我如何测试编码?

delphi

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

是否可以在Windows 7中断开WebDAV共享?

我的网络中有一个使用摘要式身份验证的WebDAV共享的Apache服务器.我还使用Windows 7中的"添加网络位置"来添加WebDAV共享.到目前为止,WebDAV共享没有任何问题.创建,复制或删除文件正在运行.

登录Windows后第一次访问WebDAV共享时,我将输入我的凭据信息(用户名和密码).如果我不从Windows 7注销,我第二次和第三次访问WebDAV时不需要提供任何凭据信息.

在我使用共享但未从Windows 7注销后,有没有简单的方法可以注销我或断开我的WebDAV共享?

WebDAV共享包含重要且敏感的数据,我希望在我再次完成共享任务后结束会话.像断开这样的功能对我来说就足够了.

webdav

4
推荐指数
2
解决办法
7989
查看次数

Delphi XE2:使用带有FireMonkey框架的运行时包构建应用程序

我们可以使用运行时包(*.bpl)构建VCL Win32应用程序.这些包可以动态或静态加载和卸载.

我们是否在Delphi XE2中使用新的FireMonkey框架具有类似的开发选项?

delphi delphi-xe2 firemonkey runtime-packages

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

如何清除鼠标单击缓冲区

我们可能使用以下代码清除键盘缓冲区:

while PeekMessage(Msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_NOYIELD) do;
Run Code Online (Sandbox Code Playgroud)

但是,如何清除鼠标单击缓冲区?

delphi mouse

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

如何在openldap中设置帐户到期日期

我希望在openldap中实施一个新的帐户策略,允许管理员设置用户帐户的到期日期.但是,我在对象类中找不到任何相关属性.

这与pwdMaxAge等密码属性无关.此策略的用法适用于订阅服务.一旦用户订购了服务器一段时间,管理员将设置订阅结束的帐户到期日期.用户在到期日之前进行身份验证,并且在到期日之后将无法进行身份验证.

这有可能在openldap中这样做吗?我google并发现Microsoft的ActiveDirectory具有AccountExpirationDate属性.

ldap openldap

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

使用SmartPointer作为结果,函数中的数据类型需要显式调用调用

我在http://members.adug.org.au/2011/12/05/smart-pointers/中使用SmartPointer

我定义了一个IStringList:

type
  IStringList = ISmartPtr<TStringList>;
Run Code Online (Sandbox Code Playgroud)

然后我可以使用如下没有内存泄漏提示:

var S: IStringList;
begin
  S := TSmartPtr<TStringList>.Create();
  S.Add('abc');
end;
Run Code Online (Sandbox Code Playgroud)

如果我在函数中使用IStringList作为结果数据类型:

function GetList: IStringList;
begin
  Result := TSmartPtr<TStringList>.Create();
  Result.Add('abc');   // E2010
end;
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误:

[dcc32 Error] Unit2.pas(31): E2010 Incompatible types: 'SmartPointer.ISmartPtr<System.Classes.TStringList>' and 'Procedure of object'
Run Code Online (Sandbox Code Playgroud)

解决方案解决方案是:

  Result.Invoke.Add('abc');
Run Code Online (Sandbox Code Playgroud)

但这打败了使用SmartPointer的语法清洁的目的.有解决方案吗?

delphi smart-pointers

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

如何在每个项目文件夹中保存dcu文件(例如:.\ $(Platform)\ $(Config)\ $(ProjectFilename)?

我在一个项目组中有很多Delphi项目.我可以设置Unit output directory.\$(Platform)\$(Config)和所有dcu文件将根据platformconfig值保存在目录中.

在我的构建环境中,我想设置类似的Unit output directory东西 .\$(Platform)\$(Config)\$(ProjectFilename),所有DCU文件都应保存在当前项目文件标识的自己的目录中.

Build事件中Project | Options$(ProjectFilename)宏但我无法使用它Unit output directory.

我想设置.\$(Platform)\$(Config)\$(ProjectFilename)所有项目Unit output directory,它会将所有DCU文件保存在唯一的项目目录中.

delphi

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

在Delphi 10 Seattle中使用多显示器支持做了什么?

当我阅读Delphi 10 Seattle中的新功能列表时,我看到了这些:

  1. 改进了IDE中的多监视器支持,能够将大多数窗体和窗格放在不同的辅助监视器上
  2. 增强的IDE项目选项,可在应用程序中轻松启用高DPI感知,并为VCL应用程序提供Windows 8.1/10多显示器支持

Windows 7或更高版本是否支持多显示器(或双视图)?Delphi IDE为多显示器支持提供了什么?

delphi delphi-10-seattle

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

如何使用Delphi的内联汇编程序调用_IntfCopy过程

procedure _IntfCopy定义System.pas如下:

procedure _IntfCopy(var Dest: IInterface; const Source: IInterface);
Run Code Online (Sandbox Code Playgroud)

只是想知道是否可以_IntfCopy使用Delphi内联汇编程序调用过程:

procedure Test;
asm
  ...
  call _IntfCopy;
end;
Run Code Online (Sandbox Code Playgroud)

这总是E2003 Undeclared identifier: '_IntfCopy'在编译期间产生的.

一个简单的编码:

var a, b: IInterface;
begin
  a := b;
end;
Run Code Online (Sandbox Code Playgroud)

在Delphi汇编程序中生成:

mov eax,$0042481c
mov edx,[$00424820]
call @IntfCopy
Run Code Online (Sandbox Code Playgroud)

但我找不到一种方法来编写内联Delphi汇编程序来通过赋值运算符进行IInterface引用.

delphi

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

如何获得通用类方法的方法地址?

我们可以使用以下代码获取类方法地址:

type
  TMyClass = class
    procedure A;
  end;

var P: Pointer;
begin
  P := @TMyClass.A;
end;
Run Code Online (Sandbox Code Playgroud)

对于泛型类,如何从泛型类获取方法地址?

type
  TGeneric<T> = class
    procedure A;
  end;


var P: Pointer;
begin
  P := @TGeneric<T>.A;  // <--- compilation error
end.
Run Code Online (Sandbox Code Playgroud)

delphi generics

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