标签: freepascal

fpcmake和Makefile.fpc,我在哪里可以接受一些培训?

我从来没有使用过任何这些,但是它们列在主要的Free Pascal网站上,我真的很想得到:

  • 初学者指导,让我入门
  • 高级指南,帮助我成长

所有这一切,以防它仍然使用/标准.

谢谢

makefile freepascal fpc

5
推荐指数
1
解决办法
1056
查看次数

使用Lazarus为Mac编写代码

我对拉撒路的自由帕斯卡做了一些工作.因此,当客户要求我为mac编写应用程序时,在最初之后,"它无法完成"阶段.(其次是asp.net可能是舞台)我想用lazarus写它.

问题是.我只有一台运行mac OSX的虚拟机,这意味着我真的不想在mac上开发.但是,我似乎无法获得我在Windows上的lazarus中编写的应用程序在Mac上工作.我已尝试使用Lazarus Wiki进行部署,并且MACOS文件夹为空,因此当我将其放在mac上时,它不会运行应用程序.

这样做的最佳方式是什么,还是我咆哮错误的树?

windows macos freepascal cross-compiling lazarus

5
推荐指数
1
解决办法
1695
查看次数

Delphi TFrame创建/销毁

如何创建(当我想要显示它)并在主TForm上销毁(当我想隐藏它时)帧?帧'align = alClient.

我试过这个:

表格:

unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, uFrame1, uFrame2;

type
  TFormMain = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    f1: TFrame1;
    f2: TFrame2;
  end;

var
  FormMain: TFormMain;

implementation

{$R *.dfm}

procedure TFormMain.FormCreate(Sender: TObject);
begin
  f1 := TFrame1.Create(Self);
  f1.Parent := Self;
end;

end.
Run Code Online (Sandbox Code Playgroud)

第一帧:

unit uFrame1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
  TFrame1 = class(TFrame) …
Run Code Online (Sandbox Code Playgroud)

delphi freepascal frame lazarus

5
推荐指数
1
解决办法
2万
查看次数

为什么gdb认为我的x86-64程序是i386?

我正在尝试调试64位程序,但gdb似乎认为它具有i386体系结构。

# file /usr/local/bin/foo
/usr/local/bin/foo: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.0, not stripped


# gdb --args foo bar
GNU gdb (GDB) 7.3.1
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB …
Run Code Online (Sandbox Code Playgroud)

gdb freepascal x86-64 fpc

5
推荐指数
1
解决办法
1万
查看次数

FPC:RTTI记录

这是我第一次访问这个网站.通常,我在旧帖中找到回复没有问题,但我的实际问题没有成功.

我想知道如何使用RTTI函数在运行时知道Lazarus/FPC下记录的属性/成员?我知道如何为一个类(Tpersistent后代和已发布的属性)执行此操作,但不知道如何为FPC执行此操作.一些链接指示如何在Delphi(来自D2010)下进行,但我不知道如何在Lazarus下转置它.

在此先感谢您的帮助和帮助.Salim Larhrib.

凯文:正如我之前所说,这是我的第一个要求.但是我明白.你是对的.这是我的代码

procedure TMainForm.btRecordTHashListClick(Sender: TObject);
var
  pTData    : PTypeData;
  pTInfo    : PTypeInfo;
  TablePtr  : PatableRecord;
  Loop      : Integer;
begin
  // Set of Record pointers + HashList

  // Create Container
  if  not Assigned(FTableRecList) then FTableRecList := TFPHashList.Create;

  // Insert data
  new(TablePtr);
  TablePtr^.description := 'Dictionnaire des tables.';
  FTableRecList.add('atable', TablePtr );

  new(TablePtr);
  TablePtr^.description := 'Dictionnaire des fonctions.';
  FTableRecList.add('afunction', TablePtr );

  new(TablePtr);
  TablePtr^.description := 'Dictionnaire des listes d''option.';
  FTableRecList.add('alist', TablePtr );

  // Read records
  for Loop:=0 to FTableRecList.Count-1 do
  begin
    TablePtr …
Run Code Online (Sandbox Code Playgroud)

freepascal lazarus fpc

5
推荐指数
1
解决办法
1362
查看次数

如何从源代码编译P4?

我是计算机科学专业的学生,​​我正在学习Pascal编程.


我找到了一个有趣的Pascal编译器P4(http://homepages.cwi.nl/~steven/pascal/).

要了解有关Pascal的更多信息,我正在尝试编译他们的源代码,但我失败了.

在这个网页上,他们说:

  1. 使用Pascal编译器编译pcom.p和pint.p.你显然必须有一个Pascal编译器.这为您提供了一个生成P4代码的Pascal编译器(pcom)和一个运行P4代码的解释器(pint).
  2. 要使用编译器,请使用Pascal程序作为标准输入运行pcom.这会在标准输出上产生任何诊断,并在Pascal文件上生成名为prr的代码.检查Pascal编译器如何将其分配给文件存储中的文件.您可能必须更改pcom.p和pint.p中的行'rewrite(prr)'和pint.p中的'reset(prd)',例如"rewrite(prr,'prr')"等等. .
  3. 要运行生成的代码,请运行pint,将pcom生成的prr输出作为文件'prd'的输入,并在标准输入上输入已编译的Pascal程序.

我用Free Pascal编译了它(在https://ideone.com/上),但也失败了.

Free Pascal Compiler version 2.6.4+dfsg-4 [2014/10/14] for i386
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling pcom.p
pcom.p(1,3) Warning: Unsupported switch "$L"
pcom.p(88,23) Fatal: Syntax error, ":" expected but ")" found
Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
Run Code Online (Sandbox Code Playgroud)

我不知道如何在Windows机器上编译这个源代码,因为我知道Pascal语言 …

pascal freepascal

5
推荐指数
1
解决办法
1072
查看次数

在Pascal中回溯:找到最大加权分支

我一直在学习Pascal(使用Free Pascal编译器)一个星期,并且遇到了一个看似简单的练习.给定如下所示的结构,找到最大加权分支:

    1
   4 9
  7 0 2
 4 8 6 3
Run Code Online (Sandbox Code Playgroud)

分支是从顶部开始的任何数字序列(在这种情况下:1),对于每个数字,分支可以向左或向右扩展.例如,分支1-4-0可以扩展为1-4-0-8或1-4-0-6.所有分支必须从顶部开始,在底部结束.

在这个例子中,最大分支是1-4-7-8,这给了我们20.为了解决这个问题,我尝试使用回溯.三角形结构存储在"三角形"类型的数组中:

type triangle = array[1..MAX_NUM_OF_ROWS, 1..MAX_NUM_OF_ROWS] of integer;
Run Code Online (Sandbox Code Playgroud)

这是我的实现:

function findAux(data: triangle; dim: integer; i: integer; j:integer) : integer;
begin
if i = dim then
    findAux := data[i][j]
else
    if findAux(data, dim, i + 1, j + 1) > findAux(data, dim, i + 1, j) then
        findAux := data[i+1][j+1] + findAux(data, dim, i + 1, j + 1);
    else
        findAux := data[i+1][j] + findAux(data, dim, i + …
Run Code Online (Sandbox Code Playgroud)

recursion pascal freepascal backtracking

5
推荐指数
1
解决办法
377
查看次数

从Visual Studio Code构建Delphi项目

我已经通过FPC和GDB在Visual Studio Code中设置了用于对象Pascal的构建和调试环境,但是我只是通过以下方式使仅包含1个.pas文件的程序的构建过程有效

"command": "fpc",
"args": [ "-g", "-Px86_64", "helloWorld.pas" ],
Run Code Online (Sandbox Code Playgroud)

现在,我需要建立一个很大的Delphi项目组(类似于解决方案?),它包含主项目文件.groupproj。

有没有办法通过FPC构建.groupproj?
还是至少有一些解决方法,例如转换为.lpi,然后通过FPC进行构建?
或者至少从VS Code调用Delphi编译器/生成器,并通过它来构建整个项目组?(但是我不喜欢这个选项,因为我更喜欢不使用Delphi)

delphi freepascal group-project visual-studio-code

5
推荐指数
1
解决办法
3733
查看次数

如何使用数组为值在Pascal中创建关联数组

我有这个文件:

Bulgaria = Bulgarian
Croatia = Croatian
Austria = Croatian
Czech Republic = Czech
Slovakia = Czech
Denmark = Danish
Germany = Danish
Belgium = Dutch
Netherlands = Dutch
Ireland = English
Malta = English
United Kingdom = English
Estonia = Estonian
Finland = Finnish
Belgium = French
France = French
Italy = French
Luxembourg = French
Austria = German
Belgium = German
Denmark = German
Germany = German
Italy = German
Luxembourg = German
Cyprus = Greek
Greece = …
Run Code Online (Sandbox Code Playgroud)

arrays pascal associative-array freepascal

5
推荐指数
2
解决办法
1355
查看次数

我的 Pascal 程序警告我无法访问的代码

为什么 pascal 在 (8,21) 和 (8,12) 行中给了我无法访问的代码。我不知道为什么它是一个将 3 位八进制数转换为十进制的简单代码。该程序没问题,因为它给了我正确的结果,但我不知道为什么 free pascal 在程序的那个部分给了我无法访问的代码。

我在 Linux 上使用 3.0.4 freepascal,我只使用我发布的命令进行编译,我没有修改 freepascal 的任何内容我使用以下命令进行编译 fpc -Co -Cr -Miso -gl

PROGRAM Ejercicio21;
VAR decimal,octal,a,b,c:integer;
BEGIN
    writeln('Ingrese el valor decimal: ');
    readln(octal);
    a:=(octal div 100);
    b:=(octal mod 100) div 10;
    c:=octal mod 10;
    decimal:=(a*sqr(8)+(b*8)+c);
    writeln('Octal',octal,'=',decimal); 
END.
Run Code Online (Sandbox Code Playgroud)

pascal compiler-errors freepascal

5
推荐指数
1
解决办法
393
查看次数