如何在不安装集成开发环境的情况下编译和运行这段Delphi代码?

4

生成一个 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;

实际上,这是从我的之前的问题中得来的。

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

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

我该如何在Delphi中以类似的方式实现呢?

只需检查您之前问题的Lars答案即可! - Hugues Van Landeghem
我也已经添加了我的答案。感谢你的提示,Hugues。 - Lars Truijens
听起来就像这个问题:https://dev59.com/xUrSa4cB1Zd3GeqPXY0D - Warren P
3个回答

11

为了编译Delphi代码,您需要一个编译器。现在没有免费版本的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和它们的免费IDELazarus。我没有亲自检查过,但我相信它也配备了命令行编译器。


如果您仅拥有dcc32.exe,而没有库(如应用程序中使用的system、VCL、第三方组件等),则它甚至无法编译一个简单的TForm项目。如果要在没有安装Delphi的情况下从命令行进行编译,您需要至少指定这些库的路径。 - ThinkJet

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文件中的代码。 - Lars Truijens
1
是的,但为了防止这种情况发生,我使用了ShowModal而不是Show方法。如果我们应该使用Show方法,则必须在DPR文件中添加Application.Initialize和Application.Run,就像普通的VCL表单应用程序一样。 - vcldeveloper
Application.Initialize 可以无害地被跳过。 - ZzZombo

1

非常容易,只需要

dcc32 "name of the project"

即使程序由10个单元组成,编译器也会自动解析它,如果在当前单元搜索路径内(请参见dcc32.cfg,或使用-U和-I添加目录)。请注意,一些“免费”的Delphi Explorer版本不带有命令行编译器。

对于.NET,它是dccil。

当然,如果与gcc进行比较,Free Pascal/Lazarus是更合理的选择(但不适用于.NET)。


“项目名称”是什么意思?我只有一个包含我粘贴的代码的单个文件。 - user198729
1
那不会编译。上面的代码假定您已经创建了一个项目,并添加了一个单元,其中包含执行此代码的函数。我猜您是 Delphi 的新手?我可以建议您先使用 IDE 吗?请查看 http://www.delphibasics.co.uk/Article.asp?Name=FirstPgm - Lars Truijens
是的,我是Delphi的新手。但我不想参考IDE。我想知道编写、编译和运行Delphi程序的一般步骤。 - user198729
这些答案将帮助您完成编译部分。现在您可能想要集中精力学习写作部分。首先学习编写Delphi/ObjectPascal。 - Lars Truijens
一个集成开发环境(IDE)可以通过提供表单设计帮助、提示、颜色高亮、代码自动完成等功能,帮助您更快地学习一门新语言。 - Lars Truijens
我不同意这个观点。在IDE中,人们往往没有充分思考“为什么”,只是试图修补并希望它能正常工作。IDE在普通开发方面的优点是明显的,但我认为大多数现代IDE并不适合教育。 - Marco van de Voort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接