MS Visual Studio有一个很棒的功能:using当你输入代码时,它会自动建议单元添加in 子句,而不需要标准类.
是否有任何第三方工具来实现Delphi的类似功能?
我很想在每个新单元中添加所有这些SysUtils,Windows,Message等.
我正在构建一个使用插件的程序.不幸的是,插件框架的动态链接迫使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:原来这是另一个跨单元泛型问题.格儿.我设法编写了一个解决方法.我希望他们很快就能解决仿制药问题.
在使用试用版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崩溃.
我正在为分散式模块注册寻找一个好的解决方案.
我不想要一个使用项目所有模块单元的单元,但我宁愿让模块单元自己注册.
我能想到的唯一解决方案就是依赖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部分的警告,我知道我必须避免在其中引发异常.
我想将QC中的修复应用到Delphi 2009单元(DBClient,因为它发生).我知道我需要将设备复制到另一个目录并对副本进行更改.然后我如何让Delphi编译该单元并使用它来支持已经存在的DCU?
我个人喜欢它,如果我的uses条款尽可能小,但在许多应用程序中,真正的大单位(在膨胀可执行文件方面)喜欢Forms或VirtualTrees至少在另一个单位需要.
所以:如果我清理我的uses条款,即使最终没有从项目中移除任何单位,它会有所不同吗?如果真是这样,那么是以哪种方式?并且:清理uses条款应该尽快完成,还是等到我偶然找到一个未使用的单位?
那么这个n00b问题,但我仍然无法弄清楚.我有单位main与程序Discard().现在我有另一个单位engine,我想从它Discard()的单位程序运行main.我有主要uses部分engine.pas.我试着打电话给程序,main.Discard()但没有好处.我究竟做错了什么?
我在一个大型单位工作,单位变得如此之大,我决定将它分成3个单位.比方说,这些单位名称Main,Common和Objects.该Main装置使用其他两个装置,该Objects装置也使用该Common装置.所有3个单元中都有代码需要参考这些条件.
问题是,无论我定义这些条件的3个单元中的哪个单元,其他2个单元都看不到它们.我当然不想在所有3个单元中复制它们.我也不想在项目中定义它们,因为这些单元将被多个项目使用,在这种情况下,使用它的所有项目都不应该关心条件.
我能否以所有3个单位都能看到它们的方式定义这些条件,而不在项目中定义它们?
我想从一个从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弹出一个圆形错误. …
当我将鼠标悬停在Uses子句中的UnitNames上时,会弹出一个窗口,显示UnitName命名空间.例如,当我鼠标悬停在SysUtils单元上时,我在弹出窗口中看到了SysUtils Namspace.如果我右键单击SysUtils并选择Cursor上的Open File,则会在IDE中打开源代码.
如果我右键单击并选择"在光标上打开文件",则会显示"打开文件"对话框.
为什么所有单元不仅仅是打开IDE?
delphi ×10
delphi-units ×10
delphi-2009 ×2
autocomplete ×1
build ×1
compilation ×1
delphi-2010 ×1
delphi-xe ×1
delphi-xe2 ×1
delphi-xe3 ×1
ide ×1
module ×1
procedures ×1
reference ×1
scope ×1
vcl ×1