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.
我有一个拥有Ruby背景的同事,有兴趣开始使用Delphi和本地开发.但是,据我所知,Turbo Delphi(基于Delphi 2006)已不再可供下载.
那么......他离开了哪里?在某处合法提供Delphi的低成本或介绍版本吗?或者Embarcadero有没有提供的产品?
注意:请不要建议任何合法可疑版本,因为这不是我们会考虑的选项.
更新:总结所有答案,您可以立即下载和安装的唯一合法和免费版Delphi(除非您已经拥有Delphi 7 Personal或Turbo Delphi的个人许可)是Delphi Community Edition.
接下来最接近的是Lazarus IDE和Free-Pascal编译器.
继这个问题和这一次,我问最近,但没有正确的细节......,最后这一次,我在自由帕斯卡论坛问具体....
任何人都可以向我提供指导,示例或某个地方的链接,解释如何使用Free Pascal调用物理连接的硬盘列表,或者,无论如何,Delphi,无论磁盘是否已由操作系统安装或不?我想要实现的屏幕截图中显示了一个示例(此屏幕截图中显示的是另一个软件产品).因此,拉出逻辑卷列表(C:\,E:\ etc)并不是我想要做的.如果磁盘有一个操作系统无法挂载的文件系统,我仍然希望看到列出的物理磁盘.
我强调C\C++\C夏普的例子很丰富,但不是我追求的.我主要需要Free Pascal示例,或者说,失败了,Delphi.

有没有办法编写单元测试,以便可以使用Delphi和Free Pascal编译和运行它们?
Delphi和Free Pascal有不同的单元测试框架,这会导致针对两个编译器(例如,库和框架开发人员)的开发人员的重复工作.
所以也许有一种方法,使用DUnit或FPCUnit框架并调整测试用例源代码(或框架本身),以便它也可以与其他编译器一起使用.
基本上问题是:
要么
Apache Maven是Java开源生态圈中非常流行的构建和依赖管理工具.我做了一些测试,以确定它是否可以处理编译的Free Pascal/Delphi单元并且发现它易于实现.所以有可能
这种依赖管理方式对于使用许多具有复杂依赖性的第三方库的开源项目非常有用.它可以避免因使用错误版本而导致的典型冲突.
对于开发人员,编辑和构建项目的工作流程将降至最低:
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将下载所有必需的库并使用必要的构建路径参数调用编译器.较低级别的依赖关系的更改将自动传播到父级构建.
可能的好处:
更新#2:FPMake
Free Pascal 的FPMake构建系统似乎是一个具有很大潜力的工具,在许多细节上它与Maven非常相似:
fppkg <packagename>将在数据库中查找该包,将其解压缩,然后编译fpmake.pp并运行它mvn deploy或mvn 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) 在语言枪战基准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的一些程序,这看起来非常低
我有一个适用于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) 我主要是一个业余爱好者程序员.我学习了C++的基础知识,然后转到我喜欢的Java,因为它很简单.现在我回到C++,我真的想用Qt API学习GUI,但我听说过很多关于Boost Libraries的讨论.
我的问题应该首先学习Qt还是先花一些时间在Boost上更好.
就个人而言,我是Qt因为我已经厌倦了看着无聊的黑色控制台屏幕.
2)Pascal/Free Pascal是一种值得学习的语言.如果是这样,那么学习它的最佳位置是什么.我知道它已经死了 - 但我被这种语言神秘地吸引了.
前一阵子的论文得到了发表于PRESENT:超轻量级分组密码由安德烈·波格丹诺夫等人成为ISO标准29192-2:2012.
是否有人使用单元测试进行C#,Delphi或FreePascal实现?
这是在这里问的,我只是想帮忙.
我正在寻找一个预定义的符号来编写这样的代码:
{$IFDEF LAZARUS}
// code compiles by fpc/lazarus
{$ELSE}
// code compiles by delphi
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)