标签: fpc

关于Lazarus和/或FPC的活跃博客

我越来越与整个方向"Emborcadero"走,我真的要投资于FPC /拉撒路真的很心烦.

Lazarus Documentation页面找到以下博客:

有人可以根据博客或Twitter帐户建议更多资源吗?

twitter resources blogs lazarus fpc

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

Free Pascal中的RawByteString类型

免费的Pascal文档声明该RawByteString类型是在Free Pascal中定义的,但我无法找到它.人们应该期望它在System单元中定义,就像在Delphi中一样,但是当我编译(使用FPC 2.6.2,{$ mode delphi})函数声明时

class function FromAnsi(const S: RawByteString): ByteArray; static;
Run Code Online (Sandbox Code Playgroud)

我得到编译器错误

Error: Identifier not found "RawByteString"
Run Code Online (Sandbox Code Playgroud)

我猜我可以自己声明这个类型:

type
  RawByteString = type AnsiString(CP_NONE);
Run Code Online (Sandbox Code Playgroud)

但我想找到"原生"FPC声明.


谢谢你快速回答.由于我不需要支持FPC 1.x,我需要的解决方法是:

{$IFDEF FPC}
{$IF FPC_VERSION = 2}
  {$IF FPC_RELEASE <= 6}
    type
      RawByteString = AnsiString;
  {$IFEND}
{$IFEND}
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

delphi rawbytestring fpc

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

FPC BASM32 MUL bug?

我在将Delphi BASM32代码移植到FPC时遇到了一个问题:

program MulTest;

{$IFDEF FPC}
  {$mode delphi}
  {$asmmode intel}
{$ELSE}
  {$APPTYPE CONSOLE}
{$ENDIF}

function Mul(A, B: LongWord): LongWord;
asm
         MUL    EAX,EDX
end;

begin
  Writeln(Mul(10,20));
  Readln;
end.
Run Code Online (Sandbox Code Playgroud)

上面的代码在Delphi XE中编译并按预期工作; FPC在线输出编译时错误MUL EAX,EDX:

错误:Asm:[mul reg32,reg32]操作码和操作数的无效组合

我正在使用Lazarus 1.4.4/FPC2.6.4 for Win32(当前稳定版)

任何解决方法或修复问题?

delphi freepascal lazarus fpc basm

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

截取特定区域的屏幕截图

我正在使用Lazarus,我在表单中有一个TImage.黑色表是a TImage,数字是labels.我需要截取我绘制的红色区域的截图.

在此输入图像描述

我怎么能这样做?

我有Lazarus 1.0.14,我没有找到任何关于此的例子.有什么建议吗?

delphi screenshot lazarus fpc

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

找不到Pascal CloseFile

我一直在用Delphi编写程序,而我想做的就是用“保存文件”设置游戏。我一直在Delphi中进行此操作,而不是在将代码带回家时才使用Pascal编译器,由于出现以下错误,我似乎无法运行程序

Free Pascal Compiler version 2.6.2-8 [2014/01/22] for x86_64                                                                                                     
Copyright (c) 1993-2012 by Florian Klaempfl and others                                                                                                           
Target OS: Linux for x86-64                                                                                                                                      
Compiling control.p                                                                                                                                              
control.p(44,12) Error: Identifier not found "CloseFile"                                                                                                         
control.p(116,14) Error: Identifier not found "closeFile"                                                                                                        
control.p(127,13) Error: Identifier not found "assignFile"                                                                                                       
control.p(143,4) Fatal: There were 3 errors compiling module, stopping                                                                                           
Fatal: Compilation aborted                                                                                                                                       
Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not specify a source file to be compiled)
Run Code Online (Sandbox Code Playgroud)

抱歉,如果这是一个愚蠢的问题,但是我对文件不熟悉,我真的希望它能够正常工作。以下是我当前使用的所有代码,以防万一您需要它,如果它混淆了其草稿,并表示感谢,请您谅解。

program Task3;

{$APPTYPE CONSOLE}
{$R *.res}

uses …
Run Code Online (Sandbox Code Playgroud)

pascal fpc

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

尝试除了最后在Delphi中尝试

对于Delphi或fpc中的嵌套异常处理,已经提到了很多东西.比如这样的东西.我的问题,也许解决了对嵌套try...块的需求,如果下面两个版本的代码之间存在实际差异,我没有看到任何除非未定义的行为或某事后发生expectfinally...

try
    StrToInt('AA');
finally
    writeln('I absolutely need this');
end;
writeln('and this');
Run Code Online (Sandbox Code Playgroud)

和...

try
  StrToInt('AA');
except
end;
writeln('I absolutely need this');
writeln('and this');
Run Code Online (Sandbox Code Playgroud)

delphi lazarus fpc

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

挂在SomeObject.Free上.检查FPC中的对象是否已免费?

如果有一个对象(在我的情况下是TJSONData)并且我想释放这个对象,则程序流有时会挂起在这个位置.我的代码中已经有了类似下面的结构,但有时似乎不适合这种情况:

if Assigned(MyRecord.MyJSONData) then
begin
  MyRecord.MyJSONData.Free;
end;
Run Code Online (Sandbox Code Playgroud)

如果我尝试释放对象两次,我可以在测试中重现此行为.在我的程序中,这通常不会发生,但现在我真正的问题:

有没有办法检查对象是否已经空闲?或者我还需要使用FreeAndNil();?

delphi free hang fpc

0
推荐指数
1
解决办法
1011
查看次数