小编Rob*_*edy的帖子

当我的EXE文件名包含单词"update"时,如何避免UAC?

我注意到以下现象:

使用Delphi 7构建的可执行文件和部分名称(包括"Update")(例如"UpdateMyApp.exe")会导致UAC显示警告,例如"您是否允许程序对您的计算机进行更改".

这是通过简单的hello world应用程序实现的.在资源管理器中显示该文件会显示覆盖在应用程序图标上的屏蔽符号.

只要重命名exe,屏蔽就会消失,应用程序会在没有警告的情况下启动.

如上所述,这只发生在使用Delphi 7构建并在Windows 7上启动的程序(我假设在Vista上相同),但不是在例如WinXP上.

使用Delphi 2007快速检查表明此问题已消失.

有趣......吓人......

除了重命名文件外,我该怎么做才能防止这种情况发生?

delphi uac delphi-7

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

记录后如何重新引发Delphi异常?

你知道在Delphi代码中捕获,记录和重新引发异常的方法吗?一个简单的例子:

procedure TForm3.Button1Click(Sender: TObject);
begin
  try
    raise Exception.Create('Bum');
  except
    on E: Exception do
    begin
      MyHandleException(E);
    end;
  end;
end;

procedure TForm3.MyHandleException(AException: Exception);
begin
  ShowMessage(AException.Message);
  LogThis(AException.Message);  
  // raise AException; - this will access violate
end;
Run Code Online (Sandbox Code Playgroud)

所以我需要在except块中重新提升它,但我想知道是否有更好的方法来编写我自己的方法来处理和(在特定条件下)重新引发异常.

delphi exception-handling

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

是否有特定原因在C++中不允许嵌套的命名空间声明?

该标准不允许这样的代码:

namespace Hello::World {

//Things that are in namespace Hello::World

}
Run Code Online (Sandbox Code Playgroud)

而是要求

namespace Hello { namespace World {

//Things that are in namespace Hello::World

}}
Run Code Online (Sandbox Code Playgroud)

理由是什么?这当时根本没有想到,还是有一个特定的原因不包括在内?

似乎第一个语法更直接地表达了应该在哪个命名空间中,因为声明模仿了以后代码中命名空间的实际使用.如果你不幸使用"哑"括号计算缩进工具,它也会减少缩进.

c++ namespaces language-design rationale

25
推荐指数
3
解决办法
5596
查看次数

为什么Perl控制语句需要括号?

这可能看起来像是最近的一个问题,问为什么Perl不允许单行"被解锁",但我发现这个问题的答案不能令人满意,因为他们要么提到语法文档说需要括号,我就是认为只是乞求这个问题,或者忽略了这个问题而只是简单地给出了无用的选择.

为什么Perl需要大括号来控制语句,如iffor?换句话说,为什么Perl需要块而不是语句,就像其他一些流行语言所允许的那样?

syntax perl language-design

24
推荐指数
6
解决办法
4430
查看次数

开发人员应该如何应对如此多的GUI配置组合?

目前,任何体面的Windows桌面应用程序必须在以下条件下运行良好并且看起来很好:

  1. XP和Vista以及Windows 7.
  2. 32位和64位.
  3. 有和没有主题.
  4. 有和没有Aero.
  5. 在96和120,也许是自定义DPI.
  6. 一个或多个监视器(屏幕).
  7. 每个操作系统都有自己的首选字体.

天啊!什么是一个微不足道的Windows桌面应用程序开发人员呢?:(

我希望得到一个关于如何处理这个GUI困境的建议的线程.

首先,我在Delphi 7上.a
)Delphi 2010是否带来了新的东西以帮助解决这种情况?
b)我们应该选择一个售后组件套件并依靠它们来解决所有这些问题吗?
c)我们应该选择售后市场剥皮引擎吗?
d)或许可以使用更多HTML类型的GUI.我们可以使用不需要使用浏览器的HTML制作相对复杂的GUI应用程序吗?(更喜欢保持它的形式)
e)我们应该只关注并编码这些场景中的每一个并放弃对它的哄骗吗?
f)最后,我们应该如何测试所有这些条件?

delphi user-interface desktop-application

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

如何使用CreateProcess将输出重定向到文件?

我尝试使用CreateProcess来运行一个简单的命令hg > test.txt.我尝试将字符串作为一个整体运行(而不是将其分成应用程序名称及其参数).为什么CreateProcess(0, "notepad.exe test.txt", ...)工作但CreateProcess(0, "hg > test.txt", ...)不工作?

c c++ winapi io-redirection

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

CreateWnd和CreateWindowHandle有什么区别?

Delphi组件有CreateWndCreateWindowHandle(DestroyWndDestroyWindowHandle).它们都打算被后代覆盖,对吧?除了底层的VCL实现之外,不打算调用它?

它们之间有什么区别; 什么时候应该被覆盖?

delphi components

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

为什么要解引用一个名为dereferencing的指针?

为什么解除引用称为解除引用?

我只是正确地学习指针,我想知道为什么要解除引用.它使我感到困惑,因为它听起来像是要删除引用,而不是通过指向目标的指针.

任何人都可以解释为什么它被称为这个?

对我来说像destination或pointed_to_value这样的东西会更有意义.

c c++ pointers terminology dereference

23
推荐指数
2
解决办法
2126
查看次数

重新提升时,为什么对Exception对象的更改会丢失?

我确信这曾经适合我,我已经在网上看到了它(Jolyon Smith和David Moorhouse).刚刚在D2007和XE2试用版中的一个简单程序中尝试过它,它不会保留修改后的消息.一旦"加注"发生,该消息将恢复为原始异常.

我错过了什么盲目明显的事情?另一种方法是"引发Exception.Create(...)",但我想只是在链上传播原始异常,只是在每个异常块上标记了附加信息.

var a: Integer;
begin
  try
    a := 0;
    Label1.Caption := IntToStr(100 div a);
  except
    on e: Exception do
    begin
      e.Message := 'Extra Info Plus the original : ' + e.Message;
      raise;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi exception

23
推荐指数
2
解决办法
993
查看次数

当控件的类名非常非常长时,为什么会出现访问冲突?

我按顺序继承了一个控件,所以我可以添加一些我需要的字段,但现在当我在运行时创建它时,我得到一个Access Violation.不幸的是,这种访问冲突不会发生在我正在创建控件的地方,甚至那些我在启用所有调试选项的情况下构建的(包括"使用调试DCU构建")堆栈跟踪根本无法帮助我!

在我尝试重现错误时,我尝试创建一个控制台应用程序,但显然这个错误只出现在Forms应用程序中,并且只有当我的控件实际显示在表单上时!

以下是重现错误的步骤.创建一个新的VCL Forms应用程序,单击一个按钮,双击以创建OnClick处理程序并写入:

type TWinControl<T,K,W> = class(TWinControl);

procedure TForm3.Button1Click(Sender: TObject);
begin
  with TWinControl<TWinControl, TWinControl, TWinControl>.Create(Self) do
  begin
    Parent := Self;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

每次我尝试时,这都会连续生成访问冲突.仅在Delphi 2010上测试过,因为这是我在这台计算机上唯一的版本.

问题是:

  • 这是Delphi的Generics中的已知错误吗?
  • 这有解决方法吗?

编辑

以下是质量控制报告的链接:http://qc.embarcadero.com/wc/qcmain.aspx?d = 112101

delphi buffer-overflow delphi-2010

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