小编And*_*and的帖子

如何在Delphi中获取Windows上的完全限定域名

我需要在Delphi中为域上的Windows机器获取完全限定的域名.

我试过用LookupAccountSid它但它只给我netbios域名,在我的情况下它是"intranet"但我需要完整的"intranet.companyname.com"

有任何想法吗?

windows delphi domain-name

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

Delphi:为什么二元字符串比较运算符(=)不使用SameStr?

这是常识,SameStr(S1, S2)比快S1 = S2,在var S1, S2: stringDelphi中.

(而且,当然,SameText(S1, S2)要快得多AnsiLowerCase(S1) = AnsiLowerCase(S2).)

但是,据我所知,SameStr(S1, S2)它完全相同S1 = S2,所以我不禁想知道为什么Delphi编译器在使用运算符SameStr测试字符串相等时不使用代码=.当然必须有这个原因吗?

一些基准测试

一个简单的程序,

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  RejbrandCommon;

const
  N = 1000000;

var
  Strings1, Strings2: StringArray;
  i: integer;
  b: {dummy }boolean;

procedure CreateRandomStringArrays;
var
  i: integer;
begin
  SetLength(Strings1, N);
  SetLength(Strings2, N);
  for i := 0 to N - 1 do
  begin
    Strings1[i] := RandomString(0, …
Run Code Online (Sandbox Code Playgroud)

delphi compiler-construction string performance

14
推荐指数
2
解决办法
2820
查看次数

德尔福应用程序被谷歌Chrome视为"危险"

我经常在Delphi 2009中制作数学软件,并将它发布在我的网站上.然而,在过去一年左右的时间里,谷歌Chrome已经开始考虑一小部分(但不断增加!)我的EXE'有害'数量,谷歌Chrome拒绝下载它们.

例如,今天我写了一个可视化Lorenz吸引子的程序.您可以在http://specials.rejbrand.se/chaos/lorenz/找到它; 它是lorenz.exe.

当我使用谷歌浏览器下载此EXE时,会出现以下提示:

Google Chrome中提示的屏幕截图http://privat.rejbrand.se/chromeblocklorenz.png

(是的,我确实尝试了三次......)

这是瑞典语,文中说"%s有害并且已被Chrome阻止".按钮显示"永久删除",下拉菜单不提供任何其他操作(例如"我知道文件是安全的,请让我拥有它").

显然,这是一个问题.据我所知,EXE非常安全.至少我编写的代码在任何方面都没有害处,但我怀疑Delphi编译器有可能开始在我背后添加有害代码.

问题

  1. 我的EXE有什么危害吗?
  2. 有没有办法让谷歌浏览器不阻止我的EXE?

delphi security google-chrome delphi-2009

14
推荐指数
2
解决办法
967
查看次数

在Delphi中下载文件

谷歌搜索显示了一些关于如何在Delphi中下载文件的示例,但大多数都是错误的,有一半的时间根据我的经验不起作用.

我正在寻找一个简单的强大解决方案,让我下载一个exe(用于更新我的应用程序),并将保持当前更新线程的执行,直到下载完成或错误输出.该进程已经过线程化,因此下载代码应该执行直到完成(希望如此).

这里有两个实现,看起来都很复杂
1. http://www.scalabium.com/faq/dct0116.htm
2. http://delphi.about.com/od/internetintranet/a/get_file_net.htm

windows delphi winapi download

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

以下代码可以用于指向不同事物的指针

我有一段记忆,我正在"守卫",定义为

typedef unsigned char byte;

byte * guardArea;
size_t guardSize;

byte * guardArea = getGuardArea();
size_t guardSize = getGuardSize();
Run Code Online (Sandbox Code Playgroud)

为此目的可接受的实现是:

size_t glGuardSize = 1024; /* protect an area of 1kb */
byte * getGuardArea()
{
     return malloc( glGuardSize );
}
size_t getGuardSize()
{
     return glGuardSize;
}
Run Code Online (Sandbox Code Playgroud)

以下代码段可以为任何指针(来自不同的malloc,来自堆栈等)返回true吗?

if ( ptr >= guardArea && ptr < (guardArea + guardSize)) {
     return true;
}
Run Code Online (Sandbox Code Playgroud)

该标准规定:

  • 区域内的值将返回true.(当ptr是成员时,所有行为都正确.)

  • 指针将是不同的(a == b只有它们是相同的).

  • 可以通过递增基数来访问字节数组中的所有地址.
  • 任何指针都可以转换为char*,而不会损坏.

所以我无法理解结果对于来自不同对象的任何指针的结果是否正确(因为它会破坏区域内其中一个指针的不同规则).

编辑:

用例是什么?

检测指针是否在区域内的能力非常重要,在某些时候编写代码

if (  isInMyAreaOfInterest( unknownPointer ) ) { …
Run Code Online (Sandbox Code Playgroud)

c pointers language-lawyer

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

有没有办法设置“重新运行”Delphi LSP 实例的快捷方式?

只要 Delphi LSP 实现存在缺陷,如果我们能够通过易于访问的快捷方式重新启动 LSP 进程,那么它就会派上用场。如何添加这样的快捷方式呢?

delphi language-server-protocol

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

特殊的简单随机数发生器

如何创建一个函数,在每个调用中生成一个随机整数?该数字必须尽可能最随机(根据均匀分布).它只允许使用一个静态变量和最多3个基本步骤,其中每个步骤仅包含arity 1或2的一个基本算术运算.

例:

int myrandom(void){
  static int x;
  x = some_step1;
  x = some_step2;
  x = some_step3;
  return x;
}
Run Code Online (Sandbox Code Playgroud)

基本算术运算是+, - ,%,而不是xor,或左移,右移,乘法和除法.当然,不允许使用rand(),random()或类似的东西.

c c++ algorithm math

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

打开Windows资源管理器目录,选择一个特定文件(在Delphi中)

我有一个程序在Windows资源管理器中打开一个文件夹,它传递了一个目录路径:

procedure TfrmAbout.ShowFolder(strFolder: string);
begin
   ShellExecute(Application.Handle,PChar('explore'),PChar(strFolder),nil,nil,SW_SHOWNORMAL);
end;
Run Code Online (Sandbox Code Playgroud)

有没有办法传递这个文件名(完整的文件名路径或只是名称+扩展名),并在Windows资源管理器中打开文件夹,但也要突出显示/选择?我要去的位置有很多文件,然后我需要在Windows中操作该文件.

delphi explorer

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

Delphi {$ IFDEF CONSOLE}问题

我刚试过

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  {$IFDEF CONSOLE}
    beep;
  {$ENDIF}
end.
Run Code Online (Sandbox Code Playgroud)

并期望beep在运行期间听到,但不是.但是,以下测试有效:

  if IsConsole then
    beep;
Run Code Online (Sandbox Code Playgroud)

为什么编译时测试不起作用?据我所知,从这份文件来看,它确实应该有效.

delphi conditional-compilation console-application compile-time

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

滚动条绘画问题与加厚的非客户端窗口边框

我试图在带有滚动条的自定义控件的客户区周围绘制彩色边框.为此,我设置BorderWidth为正整数并响应该WM_NCPAINT消息.这听起来像混合VCL和Win32,但该BorderWidth属性只是导致对WM_NCCALCSIZE消息的适当处理.

以下代码是SSCCE:

unit Unit6;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TSample = class(TCustomControl)
  protected
    procedure Paint; override;
    procedure CreateParams(var Params: TCreateParams); override;
    procedure WMNCPaint(var Message: TWMNCPaint); message WM_NCPAINT;
  published
    property BorderWidth;
  end;

  TForm6 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

{ TSample }

procedure TSample.CreateParams(var Params: TCreateParams);
begin
  inherited; …
Run Code Online (Sandbox Code Playgroud)

delphi controls border nonclient scrollbar

11
推荐指数
0
解决办法
398
查看次数