我越来越与整个方向"Emborcadero"走,我真的要投资于FPC /拉撒路真的很心烦.
去Lazarus Documentation页面找到以下博客:
有人可以根据博客或Twitter帐户建议更多资源吗?
免费的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 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(当前稳定版)
任何解决方法或修复问题?
我正在使用Lazarus,我在表单中有一个TImage.黑色表是a TImage,数字是labels.我需要截取我绘制的红色区域的截图.

我怎么能这样做?
我有Lazarus 1.0.14,我没有找到任何关于此的例子.有什么建议吗?
我一直在用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) 对于Delphi或fpc中的嵌套异常处理,已经提到了很多东西.比如这样的东西.我的问题,也许解决了对嵌套try...块的需求,如果下面两个版本的代码之间存在实际差异,我没有看到任何除非未定义的行为或某事后发生expect或finally...
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) 如果有一个对象(在我的情况下是TJSONData)并且我想释放这个对象,则程序流有时会挂起在这个位置.我的代码中已经有了类似下面的结构,但有时似乎不适合这种情况:
if Assigned(MyRecord.MyJSONData) then
begin
MyRecord.MyJSONData.Free;
end;
Run Code Online (Sandbox Code Playgroud)
如果我尝试释放对象两次,我可以在测试中重现此行为.在我的程序中,这通常不会发生,但现在我真正的问题:
有没有办法检查对象是否已经空闲?或者我还需要使用FreeAndNil();?