标签: freepascal

为什么Pascal const数组实际上不是常量?

  Program ConstTest;
  Const constVar = 1;
  Begin
    constVar := 3;
    WriteLn(constVar);
  End.
Run Code Online (Sandbox Code Playgroud)

很明显上面的代码不会编译,因为改变常量的值是不对的.但是,下面的代码将编译,并将返回"1; 5; 3;",即使数组是const:

Program ConstTest;
  Const constArr:Array [1..3] Of ShortInt = (1,2,3);
  Var i:ShortInt;
  Begin
    constArr[2] := 5;
    For i:=1 To 3 Do WriteLn(constArr[i],'; ');
  End.
Run Code Online (Sandbox Code Playgroud)

那么,是什么导致了这种行为?为什么常数实际上不是常量?

我正在使用FreePascal Compiler 2.2.0 for Win32.

arrays pascal const freepascal

11
推荐指数
1
解决办法
4637
查看次数

哪里可以找到Delphi的"Turbo"或"Lite"版本?

我有一个拥有Ruby背景的同事,有兴趣开始使用Delphi和本地开发.但是,据我所知,Turbo Delphi(基于Delphi 2006)已不再可供下载.

那么......他离开了哪里?在某处合法提供Delphi的低成本或介绍版本吗?或者Embarcadero有没有提供的产品?

注意:请不要建议任何合法可疑版本,因为这不是我们会考虑的选项.

更新:总结所有答案,您可以立即下载和安装的唯一合法和免费版Delphi(除非您已经拥有Delphi 7 Personal或Turbo Delphi的个人许可)是Delphi Community Edition.

接下来最接近的是Lazarus IDE和Free-Pascal编译器.

delphi freepascal lazarus

10
推荐指数
4
解决办法
6263
查看次数

如何使用Free Pascal调用物理连接的硬盘列表,或者,如果不这样,Delphi?

这个问题这一次,我问最近,但没有正确的细节......,最后这一次,我在自由帕斯卡论坛问具体....

任何人都可以向我提供指导,示例或某个地方的链接,解释如何使用Free Pascal调用物理连接的硬盘列表,或者,无论如何,Delphi,无论磁盘是否已由操作系统安装或不?我想要实现的屏幕截图中显示了一个示例(此屏幕截图中显示的是另一个软件产品).因此,拉出逻辑卷列表(C:\,E:\ etc)并不是我想要做的.如果磁盘有一个操作系统无法挂载的文件系统,我仍然希望看到列出的物理磁盘.

我强调C\C++\C夏普的例子很丰富,但不是我追求的.我主要需要Free Pascal示例,或者说,失败了,Delphi.

在此输入图像描述

delphi freepascal lazarus

10
推荐指数
1
解决办法
4083
查看次数

Free Pascal和Delphi的单源单元测试

有没有办法编写单元测试,以便可以使用Delphi和Free Pascal编译和运行它们?

Delphi和Free Pascal有不同的单元测试框架,这会导致针对两个编译器(例如,库和框架开发人员)的开发人员的重复工作.

所以也许有一种方法,使用DUnit或FPCUnit框架并调整测试用例源代码(或框架本身),以便它也可以与其他编译器一起使用.

基本上问题是:

  • 哪个框架(DUnit或FPCUnit)可以用两个编译器(Delphi和Free Pascal)编译,尽可能少的修改?

要么

  • 有没有第三个框架(感谢Arnaud提到TSynTest)与Delphi和FPC一起工作?

delphi unit-testing freepascal dunit

10
推荐指数
2
解决办法
1501
查看次数

Apache Maven可以免费获得Pascal的好处吗?

Apache Maven是Java开源生态圈中非常流行的构建和依赖管理工具.我做了一些测试,以确定它是否可以处理编译的Free Pascal/Delphi单元并且发现它易于实现.所以有可能

  • 发布在公共Maven存储库中为Free Pascal(或Delphi)预编译的开源库
  • 包含此存储库中包含依赖关系信息的元数据
  • 在命令行上使用Maven从公共存储库下载开源库,并自动解析所有依赖项
  • 作为代理工作的本地存储库可用于缓存经常使用的二进制文件
  • 自动校验和生成和验证(由Maven提供)将降低下载损坏的二进制文件的风险
  • 二进制文件可以提供源代码甚至文档文件
  • 可以提供带有或不带调试信息的二进制文件
  • Hudson,TeamCityCruiseControl等持续集成服务器可用于在将更改提交到源控制系统时构建项目,并通知开发人员有关构建错误的信息

这种依赖管理方式对于使用许多具有复杂依赖性的第三方库的开源项目非常有用.它可以避免因使用错误版本而导致的典型冲突.

对于开发人员,编辑和构建项目的工作流程将降至最低:

  • 从内部版本控制系统检出项目源
  • 编辑源文件
  • 运行mvn package以自动下载所有必需的第三方库(预编译单元),如果它们尚未在工作站的本地存储库中
  • 编译并运行

项目文件夹中唯一需要的Apache Maven附加文件是包含项目信息的POM.XML文件.

编辑:虽然Maven可用于一些必需的任务,但在本机Free Pascal中实现像Maven这样的解决方案会有一些优势:不需要Java SDK,支持Free Pascal可用的所有开发平台,Pascal中的维护和插件开发.

使用类似Maven的工具仅对开源项目没有帮助 - 商业项目也可以以相同的方式访问和使用公共Maven存储库中的工件.

Maven功能列于http://maven.apache.org/maven-features.html


更新:

一个用例可能是Lazarus的构建,其中Maven将下载所有必需的库并使用必要的构建路径参数调用编译器.较低级别的依赖关系的更改将自动传播到父级构建.

可能的好处:

  • 设置新工作站所需的时间更少,无需手动安装第三方库
  • 由错误的库版本引起的错误更少,检测到版本冲突(例如,如果两个库依赖于第三个库的不同版本)
  • 内部创建的工件可以添加到本地maven存储库,并在开发人员和项目之间共享,所有工件的中央存储与元数据
  • 只需使用相同的源和项目元数据文件(pom.xml),构建是可重现的
  • 可以缩短开发时间,提高项目稳定性

更新#2:FPMake

Free Pascal 的FPMake构建系统似乎是一个具有很大潜力的工具,在许多细节上它与Maven非常相似:

  • FPMake是一个基于pascal的构建系统,为FPC开发和分发
  • FPMake通过定义一些限制(如标准目录)来标准化建筑
  • 该命令fppkg <packagename>将在数据库中查找该包,将其解压缩,然后编译fpmake.pp并运行它
  • 它有标准的构建目标(清理,构建,安装......)
  • 它可以创建一个适合导入存储库(如mvn deploymvn install)的"清单"文件,清单是一个XML文件,看起来非常类似于Maven中的pom.xml:

FPMake清单文件:

      <packages>
        <package name="my-package">
          <version major="0" minor="7" micro="6" build="1"/>
          <filename>my-package-0.7.6-1.zip</filename>
          <author>my name</author> …
Run Code Online (Sandbox Code Playgroud)

delphi build-automation freepascal maven fpmake

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

Freepascal真的使用*远*比gcc更少的内存

在语言枪战基准http://benchmarksgame.alioth.debian.org/表明FPC程序使用约1 /第50次的存储器的,使用克++使用比较的方案.难道这些基准无意青睐FPC或者是难道真的是FPC是要比G ++好?我一直认为这些基准测试是一系列不错的微基准测试,所以我对这些结果感到惊讶,因为50倍是相当重要的恕我直言.

参考文献:

http://benchmarksgame.alioth.debian.org/u32/pascal.php http://benchmarksgame.alioth.debian.org/u64q/pascal.html

编辑: 这变得更加有趣,因为这个页面声称pascal只使用了8KB的一些程序,这看起来非常低

g++ freepascal fpc

9
推荐指数
2
解决办法
2778
查看次数

Delphi数据类型太大:柏林更新2中超过2 GB

我有一个适用于Delphi和Lazarus的单元.在Lazarus中,该单元编译时没有任何异常,但在Delphi中它给出了错误数据类型太大:超过2 GB.以下是代码:

unit UType;

{$ifdef FPC}
 {$MODE delphi}{$H+}
{$endif}

interface


type
  TFreqType = Extended;

  TFreqCutArray = Array [0..0]of TFreqType;

  PFreqCutArray = ^TFreqCutArray;

  FilterOrder = Integer;

  TAS_Sample = Extended;

  TAS_SampleArray = Array[0..High(Integer) div Sizeof(TAS_Sample) - 1] of TAS_Sample;

  PTAS_SampleArray = ^TAS_SampleArray;

  TAS_Float = Extended;

  TComplex = record
    Re, Im: TAS_Sample; // Z = Re + i*Im
    end;

  PComplex = ^TComplex;
  TComplexArray = Array[0..High(Integer) div Sizeof(TComplex) - 1] of TComplex;//here Delphi gives the error

  PComplexArray = ^TComplexArray;
  FilterProc = function(V: TAS_Sample): TAS_Sample …
Run Code Online (Sandbox Code Playgroud)

delphi freepascal lazarus delphi-10.1-berlin

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

我应该先学习哪些:Boost或Qt

我主要是一个业余爱好者程序员.我学习了C++的基础知识,然后转到我喜欢的Java,因为它很简单.现在我回到C++,我真的想用Qt API学习GUI,但我听说过很多关于Boost Libraries的讨论.

我的问题应该首先学习Qt还是先花一些时间在Boost上更好.

就个人而言,我是Qt因为我已经厌倦了看着无聊的黑色控制台屏幕.

2)Pascal/Free Pascal是一种值得学习的语言.如果是这样,那么学习它的最佳位置是什么.我知道它已经死了 - 但我被这种语言神秘地吸引了.

c++ user-interface qt boost freepascal

8
推荐指数
4
解决办法
9371
查看次数

任何拥有C#,Delphi或FreePascal实现的PRESENT Ultra-Lightweight Block Cipher加密的人?

前一阵子的论文得到了发表于PRESENT:超轻量级分组密码安德烈·波格丹诺夫等人成为ISO标准29192-2:2012.

是否有人使用单元测试进行C#,Delphi或FreePascal实现?

这是在这里问的,我只是想帮忙.

c# delphi iso freepascal block-cipher

8
推荐指数
1
解决办法
651
查看次数

在Lazarus和Delphi之间选择的预定义符号

我正在寻找一个预定义的符号来编写这样的代码:

{$IFDEF LAZARUS}
// code compiles by fpc/lazarus
{$ELSE}
// code compiles by delphi
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

delphi freepascal conditional-compilation lazarus

8
推荐指数
1
解决办法
700
查看次数