标签: fpc

仅使用FPC的GUI

我想知道如何仅使用安装了Lazarus的FPC(Pascal)而不使用Delphi语言(Object Pascsl)来开发GUI应用程序(32位)。谢谢。

user-interface pascal freepascal lazarus fpc

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

Pascal中的类型检查

我只是想知道如何在pascal中进行类型检查?我已经搜寻了几个小时,但找不到任何有用的东西。

例:

var 
number: Integer;

begin
  write('Enter a number: ');
  read(number);

  if {How am I supposed to check if 'number' is an Integer here?}
  then writeln(number)
  else writeln('Invalid input')
end.
Run Code Online (Sandbox Code Playgroud)

pascal fpc

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

如何删除警告:link.res包含输出节;你忘了-T吗?

我正在使用fpc编译器,并且想删除此警告。我已经阅读了fpc的选项,但找不到该怎么做。这可能吗?它在我运行命令时出现:

fpc foo.pas
Run Code Online (Sandbox Code Playgroud)

出:

目标操作系统:Linux for i386编译foo.pas链接p2 / usr / bin / ld:警告:link.res包含输出节;你忘了-T吗?汇编79行,0.1秒

linux pascal ld fpc

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

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
查看次数

如何使用CreateFile访问物理磁盘?

我在Lazarus编程论坛上询问如何打开物理磁盘.我想允许用户在单击"选择磁盘"按钮时从系统中选择物理磁盘.Stack Overflow中有一些类似但不完全相同的示例(例如Delphi - 使用DeviceIoControl传递IOCTL_DISK_GET_LENGTH_INFO来获取闪存介质的物理大小(非分区)).

有很多C和C++使用的例子CreateFile(在文档中,特别是调用的例子DeviceIoControl)但我找不到任何Free Pascal或Delphi,我还不够好,我还没有找到如何做到这一点.

任何人都可以指向我解释它的链接的方向或更好仍然是用Delphi或Free Pascal编写的实际示例?任何人都可以帮我理解如何使用它吗?

delphi freepascal lazarus fpc

4
推荐指数
1
解决办法
6421
查看次数

将FPC .o文件链接到Delphi

如何将FPC .o从库链接到Delphi可执行文件.当我尝试链接以下代码时,我得到了一堆不满意的前向或外部声明.

library project1;

{$mode objfpc}{$H+}

uses
  Classes
  { you can add units after this };

function Test: Integer;
begin
  Result := -1;
end;

begin
end.


[dcc64 Error] Project2.dpr(170): E2065 Unsatisfied forward or external declaration: 'INIT$_$SYSTEM'
[dcc64 Error] Project2.dpr(170): E2065 Unsatisfied forward or external declaration: 'FINALIZE$_$OBJPAS'
[dcc64 Error] Project2.dpr(170): E2065 Unsatisfied forward or external declaration: 'INIT$_$LNFODWRF'
[dcc64 Error] Project2.dpr(170): E2065 Unsatisfied forward or external declaration: 'FINALIZE$_$LNFODWRF'
[dcc64 Error] Project2.dpr(170): E2065 Unsatisfied forward or external declaration: 'INIT$_$FPINTRES'
[dcc64 Error] Project2.dpr(170): …
Run Code Online (Sandbox Code Playgroud)

delphi freepascal fpc delphi-xe5

4
推荐指数
1
解决办法
604
查看次数

多线程bubblesort.与delphi 7一起工作正常但与Lazarus不一样吗?编译错误?

首先,我想向您展示我的代码:

unit BSort;

{==============================================================================}

{$mode objfpc}{$H+}

{==============================================================================}

interface

{==============================================================================}

uses
  Classes, SysUtils;

{==============================================================================}

type
  TcompFunc = function(AValue1, AValue2 : Integer) : boolean;
  TIntegerArray = array of integer;
  PIntegerArray = ^TIntegerArray;

{==============================================================================}

procedure BubbleSort(var AMatrix : TIntegerArray; ACompFunc : TCompFunc);
function V1LargerV2(AValue1, AValue2 : Integer) : Boolean;

{==============================================================================}

implementation

{==============================================================================}

procedure Swap(var AValue1, AValue2 : Integer);
var
  Tmp : Integer;
begin
  Tmp := AValue1;
  AValue1 := AValue2;
  AValue2 := Tmp;
end;

{==============================================================================}

function V1LargerV2(AValue1, AValue2 : Integer) : Boolean;
begin
  result …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading lazarus fpc

4
推荐指数
1
解决办法
663
查看次数

Free Pascal有命令行解释器吗?

例如,我可以通过在我的Pascal文件中添加一个shebang来使用:

#!/usr/bin/env fpi
Run Code Online (Sandbox Code Playgroud)

interpreter pascal freepascal shebang fpc

3
推荐指数
1
解决办法
1264
查看次数

在FPC中划分单位名称

是否可以将带有范围名称的Delphi单元移植MyLib.Classes.pas到FPC(版本2.6.0)而不重命名它以删除范围前缀MyLib.

delphi fpc

3
推荐指数
1
解决办法
261
查看次数

为什么这个LEA指令不能编译?

我正在将32位Delphi BASM代码移植到64位FPC(Win64目标操作系统),并想知道为什么下一条指令不能在64位FPC中编译:

{$IFDEF FPC}
  {$ASMMODE INTEL}
{$ENDIF}

procedure DoesNotCompile;
asm
      LEA   ECX,[ECX + ESI + $265E5A51]
end;

// Error: Asm: 16 or 32 Bit references not supported
Run Code Online (Sandbox Code Playgroud)

可能的解决方法是:

procedure Compiles1;
asm
      ADD   ECX,ESI
      ADD   ECX,$265E5A51
end;

procedure Compiles2;
asm
      LEA   ECX,[RCX + RSI + $265E5A51]
end;
Run Code Online (Sandbox Code Playgroud)

我只是不明白LEAWin64目标中的32位指令有什么问题(它在32位Delphi中编译好,所以它是一个正确的CPU指令).


优化备注:

下一代码由64位FPC 2.6.2编译

  {$MODE DELPHI}
  {$ASMMODE INTEL}

procedure Test;
asm
        LEA     ECX,[RCX + RSI + $265E5A51]
        NOP
        LEA     RCX,[RCX + RSI + $265E5A51]
        NOP
        ADD     ECX,$265E5A51
        ADD     ECX,ESI
        NOP
end;
Run Code Online (Sandbox Code Playgroud)

生成下一个汇编程序输出: …

delphi assembly fpc basm

3
推荐指数
1
解决办法
382
查看次数