如何在不安装 IDE 的情况下编译和运行此 Delphi 代码?

Posted

技术标签:

【中文标题】如何在不安装 IDE 的情况下编译和运行此 Delphi 代码?【英文标题】:How to compile and run this Delphi code without installing an IDE? 【发布时间】:2009-12-31 16:27:09 【问题描述】:

据说要生成一个winform:

var
  F : TForm;
  L : TLabel;
begin
  F := TForm.Create(Application);
  L := TLabel.Create(F);
  L.Parent := F; // Needed to have it show up on the form.
  L.Left := 50;
  L.Top := 50;
  L.Caption := 'This is an example';
  F.Show;
end;

事实上它来自my previous question。

如果是C程序,我可以这样运行:

> gcc foo.c -o foo.exe
> foo.exe

如何在 Delphi 中进行类似操作?

【问题讨论】:

只需检查 Lars 对您上一个问题的回答! 我也添加了对这个问题的回答。感谢 Hugues 的提示。 听起来和这个问题一模一样:***.com/questions/1813477/gui-only-by-using-fpc 【参考方案1】:

为了编译 Delphi 代码,您需要一个编译器。 Delphi 不再提供免费版本,因此除非您能找到旧版本,否则您将不得不购买 Delphi。 Delphi 自带 gcc 等命令行编译器,无需 IDE 也能编译程序。

Delphi 2006 和 win32 之前的版本:

dcc32 YourProject.dpr

Delphi 2006 及之前的 .Net:

dccil YourProject.dpr

Delphi 2007 及之后:

msbuild YourProject.dproj

这将生成一个已编译的二进制文件,如果是 EXE,您可以像以前一样运行它。

Delphi 有免费的替代品,例如 FreePascal 和他们的免费 IDE Lazarus。我自己没有检查过,但我很确定它也带有命令行编译器。

【讨论】:

如果您只有没有库(系统、VCL、应用程序中使用的第 3 方组件等)的 dcc32.exe,它甚至无法使用 TForm 编译一个简单的项目。要在不安装 Delphi 的情况下从命令行编译,您至少需要指定此库的路径。【参考方案2】:

您应该在 DPR 文件中编写此代码。 DPR 文件的一般结构是这样的:

program ProgramName;

uses List of used units;

begin
  Your code
end.

因此对于上述代码,您的 DPR 文件将如下所示:

program Project1;

uses
  Forms, StdCtrls;

var
  F : TForm;
  L : TLabel;
begin
  F := TForm.Create(nil);
  try
    L := TLabel.Create(F);
    L.Parent := F; // Needed to have it show up on the form.
    L.Left := 50;
    L.Top := 50;
    L.Caption := 'This is an example';
    F.ShowModal;
  finally
    F.Free;
  end;
end.

您可以在文本编辑器中键入此代码,并将其保存为 Project1.dpr。

现在你可以使用 Delphi 的命令行编译器来编译它了:

dcc32.exe Project1.dpr

【讨论】:

恐怕这也行不通,但这是一个好的开始。需要创建应用程序并调用 Application.Run,​​否则应用程序将不会发送消息并立即退出。查看普通 VCL 应用程序的 .dpr 文件中的代码。 是的,但为了防止这种情况,我使用 ShowModal 而不是 Show。如果我们应该使用 Show 方法,那么我们必须在 DPR 文件中添加 Application.Initialize 和 Application.Run ,就像普通的 VCL 表单应用程序一样。 Application.Initialize 可以无害地跳过。【参考方案3】:

简单多了

dcc32 "name of the project"

即使程序存在于 10 个单元之外,如果在当前单元搜索路径中,编译器也会自动解析它(参见 dcc32.cfg,或使用 -U 和 -I 添加目录)。请注意,Delphi 的某些“免费”资源管理器版本不附带 cmdline 编译器。

对于 .NET,它是 dccil。

当然,如果与 gcc 相比,Free Pascal/Lazarus 是更合乎逻辑的选择(但不适用于 .NET)。

【讨论】:

“项目名称”是什么意思?我只有一个文件,其中包含我粘贴的代码。 那不会编译。上面的代码假设您已经创建了一个项目并向其中添加了一个单元,其中包含执行此代码的函数。我假设你是德尔福的新手?我可以建议先使用 IDE 吗?看看delphibasics.co.uk/Article.asp?Name=FirstPgm 是的,我是delphi新手。但我不想参考IDE。我想知道编写、编译和运行delphi程序的一般步骤。 这些答案将帮助您完成编译部分。您现在可能想专注于写入部分。从学习编写 Delphi/ObjectPascal 开始。 一个 IDE 将通过在设计表单、帮助、提示、颜色突出显示、代码完成等时提供帮助来帮助您更快地学习一门新语言

以上是关于如何在不安装 IDE 的情况下编译和运行此 Delphi 代码?的主要内容,如果未能解决你的问题,请参考以下文章

linux下编译和运行stellar区块链的horizon组件

cmd下编译和运行两个相关类的异常问题

利用文本编辑器输入课堂上练习的Hello.java,并在JDK环境下编译和运行。

TightVNC2.8.5在VS2010下编译和错误解决

利用文本编辑器输入Hello.java,并在JDK环境下编译和运行。请将程序编译运行的结果

4.用文本编辑器输入课堂上练习的Hello.java,并在JDK环境下编译和运行。请将程序编译运行的结果截图,填入下框中。