标签: delphi-2007

如何关闭特定的Delphi警告和提示?

在CodeGear Delphi 2007中,如何关闭特定警告和提示?我试图关闭H2077 - 分配给'varname'的值从未使用过.

delphi compiler-construction warnings delphi-2007

5
推荐指数
3
解决办法
8243
查看次数

如何避免两次调用Application.CreateForm?

我偶然发现了这个页面为什么我不应该调用Application.CreateForm.现在我有一些像这样的代码:

SplashForm := TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Update; // force update
Application.Initialize;
Application.CreateForm(TClientData, ClientData);
SplashForm.Update; // force update
Application.CreateForm(TClientMainForm, ClientMainForm);
Application.ShowHint := True;

Application.Run;
ClientMainForm.ServerConnected := false;
FreeAndNil(ClientMainForm);
FreeAndNil(ClientData);
Run Code Online (Sandbox Code Playgroud)

首先创建一个splashform,然后创建一个datamodule并持续主窗体.页面说不应该调用Application.CreateForm两次.上面的代码应该改变吗?

delphi delphi-2007

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

Delphi 2007 for .NET中的"无法启动调试...无法附加到ASP.NET辅助进程"消息

我已经看了很久了,最后决定把问题放在这里.我有一些我需要维护的应用程序是用Delphi 2007 for .NET(ASP.NET 2.0)编写的.通常,我第一次运行应用程序(使用IIS)时,我得到了经典的"无法在Web服务器上启动调试.无法附加到ASP.NET工作进程"消息.我只需按F9(运行)再次运行.有时我必须尝试运行几次才能实际运行.

我正在运行Windows 7 64位(并且在Vista 64位上看到了相同的效果).我确实为ASP.NET配置了IIS,并且我的Web.config文件中有以下代码.

  <system.webServer>
      <modules>
         <add name="DbgConnect" type="Borland.DbkAsp.DbkConnModule,Borland.dbkasp,Version=10.5.0.0,
           Culture=neutral, PublicKeyToken=b0524c541232aae7" preCondition="managedHandler" />
      </modules>
      <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
Run Code Online (Sandbox Code Playgroud)

关键是我最终可以在调试器中运行应用程序,有时甚至是第一次尝试.很多时候,当我遇到故障时,它会在我按下Run后大约15秒左右发生,有时甚至在我点击一两页(或三个)Web应用程序之后.并且,是的,当Delphi进入这种模式时,我可以简单地运行而无需调试,一切都很好(除非我真的想调试).并且,我可以继续尝试在调试器中运行,最终它将正常工作.

似乎Delphi的.NET调试器在某种程度上得到了应用程序无法运行的想法,然后放弃并停止进程(正如我所提到的那样,有时候显然正在运行).

我知道其他开发者也看到了这种行为.我的问题是,有谁知道如何阻止这种烦人的行为?

asp.net delphi delphi.net delphi-2007

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

向表单添加边框图标

使用Delphi我想在边框图标按钮上添加另一个按钮; 关闭,最大化,最小化.关于如何做到这一点的任何想法?

windows delphi titlebar delphi-2007 custom-titlebar

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

delphi中名为create的函数的问题

我有这样的基类声明

type
  TBaseClass=class
   protected
    constructor Create(LoadData:boolean;const Param1,Param2:string); overload;
   public
    Destructor  Destroy; override;
  end;
Run Code Online (Sandbox Code Playgroud)

现在,在另一个单元的子类TChid_Class,从下降 TBaseClass

  TChid_Class=class(TBaseClass)
   function Create(const Param1, Param2 : String;const Param3 : OleVariant ; var Param4 : LongInt): Integer;overload;
   constructor Create; overload;
   constructor Create(LoadData:boolean); overload;
  end;
Run Code Online (Sandbox Code Playgroud)

在此类中,存在一个称为Create构造函数的函数,问题是,当我尝试创建实例时TChid_Class遇到访问冲突。

我写了这个小控制台应用程序,显示了问题

program TestClass;

{$APPTYPE CONSOLE}

uses
  Variants,
  SysUtils;

type
  TBaseClass=class
   protected
    constructor Create(LoadData:boolean;const Param1,Param2:string); overload;
   public
    Destructor  Destroy; override;
  end;

  TChid_Class=class(TBaseClass)
   function Create(const Param1, Param2 : String;const Param3 : OleVariant ; var Param4 : LongInt): …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007

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

Delphi什么时候尊重`inline`而什么时候不?

我想要优化一段具有这种结构的代码:

while (i > 0) do begin
  Dec(i);
Run Code Online (Sandbox Code Playgroud)

这看起来效率低下,所以我尝试这样做:

while (Dec(i) >= 0) do begin
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为Dec是一个过程而不是一个函数.

所以我把它重写为:

procedure Withloop;
var
  ....
  function Decr(var a: integer): integer; inline;
  begin
    Dec(a);
    Result:= a;
  end;

...
  while (Decr(i) >= 0) do begin
Run Code Online (Sandbox Code Playgroud)

但这会编译成:

SDIMAIN.pas.448: while (Decr(i) >= 0) do begin
00468EE5 8BC4             mov eax,esp
00468EE7 E8D0FEFFFF       call Decr          <<--- A call??
00468EEC 85C0             test eax,eax
00468EEE 0F8D12FFFFFF     jnl $00468e06
00468EF4 EB01             jmp $00468ef7
Run Code Online (Sandbox Code Playgroud)

然而,在程序的另一部分,它内联函数就好了.
我可以使用哪些经验法则(或硬规则)来了解Delphi将遵守该inline指令?

delphi optimization inline delphi-2007

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

Indy 9 + Delphi 2007最新的SSL库可用吗?

当使用Delphi 2007和Indy 9时,可以加载哪些最新的OpenSSL库以及它们在哪里可用?

delphi ssl delphi-2007 indy-9

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

Delphi 2007使用Windows Imaging Component(WIC)

我需要在Delphi 2007中阅读并将一些图片从jpg转换为bmb到bmp.

转换后,某些图片被剪切,灰度或最差.

我搜索过,但在任何情况下我都找不到在delphi 2007中添加像TWICImage这样的WIC例程的技巧.

我在某处读到可以通过COM轻松添加,但我不知道如何导入文件或文件.

谢谢.

delphi com jpeg bmp delphi-2007

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

如何防止两个对齐底部控件与反转顺序?

我有一个包含三个主要组件的表单:

  1. 设置为与客户端对齐的FlowPanel
  2. 第二个FlowPanel设置为Align to Bottom
  3. StatusBar设置为Align to Bottom.

一切都开始看起来很棒.但是与底部对齐的FlowPanel也设置为AutoSize.它包含一个可以自行折叠的面板.内部面板包含用户可以决定隐藏的摘要信息.这会将FlowPanel的大小降低到非常小的尺寸但不会完全消失.仍然有一个按钮,用户可以在其中重新展开摘要面板.

面板重新展开导致FlowPanel增长时出现问题.那时状态栏和FlowPanel的顺序相反.它们仍然设置为对齐底部,但现在状态栏位于我的FlowPanel之上.

我可以在没有折叠面板的测试应用程序中复制它,只需在表单上放置按钮即可查看底部流量面板的高度.如果高度增加,则订单会发生变化.如果它减少了,那么一切都保持相同的顺序.我的测试表单中唯一的代码是:

FlowPanel2.Height := FlowPanel2.Height * 2;
Run Code Online (Sandbox Code Playgroud)

我也测试了这个,底部面板是常规TPanel而不是FlowPanel,结果相同.

关于为什么会发生这种情况以及如何预防的任何想法?

移动状态栏图像

delphi vcl delphi-2007

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

如何为事件方法创建一个单独的单元,IDE允许我在设计时分配给组件事件?

我有一个表单,其中包含某些具有事件处理程序的组件.现在我想将这些事件处理程序(那些方法)移动到一个单独的单元,仍然能够在设计时通过Object Inspector将它们分配给组件事件.

是否可以仅为事件方法创建一个单独的单元,以便Object Inspector允许我在设计时分配它们?

假设我是否会使用公共程序制作该单元:

unit Unit2;

interface

procedure ButtonClick(Sender: TObject);

implementation

procedure ButtonClick(Sender: TObject);
begin
  // do something here
end;

end.
Run Code Online (Sandbox Code Playgroud)

或者使用已发布方法的类,如下所示:

unit Unit2;

interface

type
  TMyClass = class
  published
    procedure ButtonClick(Sender: TObject);
  end;

var
  MyClass: TMyClass;

implementation

{ TMyClass }

procedure TMyClass.ButtonClick(Sender: TObject);
begin
  // do something here
end;

end.
Run Code Online (Sandbox Code Playgroud)

如何为事件方法创建一个单独的单元,IDE允许我在设计时分配给组件事件?例如:

在此输入图像描述

delphi delphi-2007

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