标签: delphi-units

任何为Delphi 2010自动建议单位参考的工具?

MS Visual Studio有一个很棒的功能:using当你输入代码时,它会自动建议单元添加in 子句,而不需要标准类.

是否有任何第三方工具来实现Delphi的类似功能?

我很想在每个新单元中添加所有这些SysUtils,Windows,Message等.

delphi autocomplete reference delphi-units delphi-2010

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

为什么我的单位"使用不同版本编译"我自己的文件?

我正在构建一个使用插件的程序.不幸的是,插件框架的动态链接迫使RTL和VCL退出我的项目EXE并进入BPL版本,并且它们没有启用调试信息.

所以我构建了一个静态链接到我的插件的测试框架,这样我就可以在跟踪代码时看到我正在做的事情.但是现在,每次我尝试重新编译时,都会收到一个错误:"unit turbu_skills是用不同版本的turbu_database.GDatabase编译的"

我以前见过这个错误,但只有当我一直在改变我可能不应该做的事情时,比如RTL或VCL库.我不明白为什么用我自己的代码做这件事.turbu_skills和turbu_database单元都是我自己编写的单元.GDatabase是一个全局单例变量,其类定义我几周没有改变.触发重新编译的任何更改都会导致此错误,即使我没有触及任何一个单元中的任何内容.

执行完整版本(SHIFT-F9)会使其正确编译.但是,如果我然后按单位(任何单位)按SPACE并按F9,我会再次收到错误.发生了什么,我该如何阻止它?这不会发生在主应用程序中,只会发生在测试框架中.

编辑:我有我所有单位的来源.删除DCU和类似文件没有帮助.将整个项目复制到另一台计算机,删除所有DCU,并在那里构建没有帮助.我的程序布局和编译器之间存在客观的,可重现的冲突,我想摆脱它.

如果有人想测试它,可以在http://www.turbu-rpg.com/downloads/Turbu_source_setup.exe找到该源代码.它需要已安装JVCL的Delphi 2009; 安装程序包将负责其余部分.也许拥有源代码可以帮助某人跟踪它.我当然希望如此,因为无论问题出在哪里,它都超越了我.问题可以在testing.exe和turbu.groupproj中的turbu.exe中找到.

编辑2:原来这是另一个跨单元泛型问题.格儿.我设法编写了一个解决方法.我希望他们很快就能解决仿制药问题.

delphi compiler-construction delphi-2009 delphi-units

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

未找到Delphi XE-F1027单元:激活试用版时的'System.pas'或二进制等效(.dcu)

在使用试用版30天后,我刚购买了完整版的Delphi XE Architect.我无法构建任何东西,每次我去构建项目时我都会收到错误.

[DCC Fatal Error] MegaMainPrj.dpr(1): F1027 Unit not found: 'System.pas' or binary equivalents (.dcu)
Run Code Online (Sandbox Code Playgroud)

一个快速的谷歌说,库路径是一个问题,我比较了(在之前的stackoverflow问题中)给出的内容与我在注册表中的内容,它是相同的.

可能是什么导致了这个?

编辑:Immediatly我收到此错误消息后整个IDE崩溃.

delphi build delphi-units delphi-xe

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

使用初始化部分进行模块注册是个好主意吗?

我正在为分散式模块注册寻找一个好的解决方案.

我不想要一个使用项目所有模块单元的单元,但我宁愿让模块单元自己注册.

我能想到的唯一解决方案就是依赖initializationDelphi单元.

我写了一个测试项目:

单元2

TForm2 = class(TForm)
private
  class var FModules: TDictionary<string, TFormClass>;
public
  class property Modules: TDictionary<string, TFormClass> read FModules;
  procedure Run(const AName: string);
end;

procedure TForm2.Run(const AName: string);
begin
  FModules[AName].Create(Self).ShowModal;
end;

initialization
  TForm2.FModules := TDictionary<string, TFormClass>.Create;

finalization
  TForm2.FModules.Free;
Run Code Online (Sandbox Code Playgroud)

UNIT3

TForm3 = class(TForm)

implementation

uses
  Unit2;

initialization   
  TForm2.Modules.Add('Form3', TForm3);
Run Code Online (Sandbox Code Playgroud)

UNIT4

TForm4 = class(TForm)

implementation

uses
  Unit2;

initialization   
  TForm2.Modules.Add('Form4', TForm4);
Run Code Online (Sandbox Code Playgroud)

这有一个缺点.是否保证我的注册单元(在本例中为Unit2s)initialization部分始终先运行?

我经常阅读关于initialization部分的警告,我知道我必须避免在其中引发异常.

delphi module delphi-units initialization-order delphi-xe3

10
推荐指数
3
解决办法
4966
查看次数

如何从VCL重新编译特定单元?

我想将QC中的修复应用到Delphi 2009单元(DBClient,因为它发生).我知道我需要将设备复制到另一个目录并对副本进行更改.然后我如何让Delphi编译该单元并使用它来支持已经存在的DCU?

delphi vcl compilation delphi-2009 delphi-units

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

如果我删除了我的使用条款,如果删除的单位仍在其他单位中使用,它会有所不同吗?

我个人喜欢它,如果我的uses条款尽可能小,但在许多应用程序中,真正的大单位(在膨胀可执行文件方面)喜欢FormsVirtualTrees至少在另一个单位需要.

所以:如果我清理我的uses条款,即使最终没有从项目中移除任何单位,它会有所不同吗?如果真是这样,那么是以哪种方式?并且:清理uses条款应该尽快完成,还是等到我偶然找到一个未使用的单位?

delphi delphi-units

7
推荐指数
4
解决办法
783
查看次数

如何从另一个单位运行程序?

那么这个n00b问题,但我仍然无法弄清楚.我有单位main与程序Discard().现在我有另一个单位engine,我想从它Discard()的单位程序运行main.我有主要uses部分engine.pas.我试着打电话给程序,main.Discard()但没有好处.我究竟做错了什么?

delphi scope procedures delphi-units

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

我可以在一个单元中定义条件并在其他单元中使用它们吗?

我在一个大型单位工作,单位变得如此之大,我决定将它分成3个单位.比方说,这些单位名称Main,CommonObjects.该Main装置使用其他两个装置,该Objects装置也使用该Common装置.所有3个单元中都有代码需要参考这些条件.

问题是,无论我定义这些条件的3个单元中的哪个单元,其他2个单元都看不到它们.我当然不想在所有3个单元中复制它们.我也不想在项目中定义它们,因为这些单元将被多个项目使用,在这种情况下,使用它的所有项目都不应该关心条件.

我能否以所有3个单位都能看到它们的方式定义这些条件,而不在项目中定义它们?

delphi conditional-compilation delphi-units delphi-xe2

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

从Delphi的子单元访问主表单

我想从一个从main调用的类中访问一个主窗体变量.像这样的东西:

单元1:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;
var
  Form1: TForm1;
  Chiled:TChiled;
const
 Variable = 'dsadas';
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Chiled.ShowMainFormVariable;
end;

end.
Run Code Online (Sandbox Code Playgroud)

单元2:

unit Unit2;

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

  type
  TChiled = class
  private
  public
    procedure ShowMainFormVariable;
  end;
var
  Form1: TForm1;
implementation

procedure TChiled.ShowMainFormVariable;
begin
  ShowMessage(Form1.Variable);
end;
end.
Run Code Online (Sandbox Code Playgroud)

如果在Unit2中我添加使用Unit1弹出一个圆形错误. …

delphi circular-dependency delphi-units

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

在光标处打开文件不会在IDE中打开文件

当我将鼠标悬停在Uses子句中的UnitNames上时,会弹出一个窗口,显示UnitName命名空间.例如,当我鼠标悬停在SysUtils单元上时,我在弹出窗口中看到了SysUtils Namspace.如果我右键单击SysUtils并选择Cursor上的Open File,则会在IDE中打开源代码.

如果我右键单击并选择"在光标上打开文件",则会显示"打开文件"对话框.

为什么所有单元不仅仅是打开IDE?

ide delphi delphi-units

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