问题标签 [fpc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1208 浏览

linux - Linux链接器标志-lXi在编译Lazarus代码时找不到lib

在我解决了我的第一个问题后,我进入了另一个问题。看起来我缺少某种库,使链接器抱怨 -lXi 不起作用。

我已经包含了大部分 Xorg 开发包,我还需要什么?

0 投票
2 回答
961 浏览

winapi - Win32互斥锁不等待

我正在创建一个实现进程间通信的应用程序。为此,我设置了一个共享缓冲区,它似乎工作正常。现在,我需要一种方法让数据生成应用程序(用 c++ 编写)告诉数据接收应用程序(用 freepascal/lazarus 编写)何时应该读取数据。

我试图为此目的使用互斥锁。我对windows api编程没有太多经验。

所以,我的问题是,在下面的 FreePascal 代码中,互斥锁不会等待。我可以调用 TMutex.Wait() 函数,它不会返回错误或任何东西,但它根本不会等待。

构造函数 TMutex.Create(sName: AnsiString);
开始
  sName := 'Local\Mutex'+sName;
  hMutex := CreateMutexA(
        nil, // 默认访问
        True, // 最初不拥有
        PChar(sName)); //
  如果 hMutex = 0 则命名为互斥体 然后
  开始
    raise Exception.Create('互斥体创建失败');
  结尾;
结尾;

析构函数 TMutex.Destroy;
开始
  关闭句柄(hMutex);
结尾;

程序 TMutex.Wait;
开始
  if (WaitForSingleObject(hMutex, INFINITE) <> 0) then ShowMessage('debug: wait returned something');
结尾;

程序 TMutex.Post;
开始
  ReleaseMutex(hMutex);
结尾;

0 投票
3 回答
1548 浏览

delphi - 从 Delphi 转换为 Lazarus 的 GUI 应用程序中的空主窗体

我已将我的 2 个 GUI 应用程序从 Delphi 转换为 Lazarus。这两个应用程序都针对 Win32 平台、i386 和 GUI 进行编译。主窗体是使用 Lazarus 工具转换的,可以从 IDE 进行编辑。但是当我运行这样的应用程序时,主窗体并没有出现,只有空白窗体,没有任何控件。

我试图调试这个。它运行初始化部分中的所有代码,并运行来自 .lpr 项目的代码,但是在 CreateForm() 中发生了一些错误,因为它没有在主窗体 OnCreate 事件中运行代码。在事件日志中,我可以看到我写给它的所有文本,'<App.Run'在我关闭这个空表单后出现。

.lpr 项目中的代码:

我检查了我是否能够从 Lazarus 创建简单的 GUI 应用程序,但是两个转换后的 GUI 应用程序都不能按预期工作。有什么问题?我错过了什么吗?也许拉撒路写的许多警告和提示之一很重要?

当我运行我的应用程序时,Lazarus 写道:

编辑:

Lazarus 转换工具转换了 .dfm -> .lfm,但 .pas 文件存在一些问题。我不得不手动:

  1. 将 Lazarus 单位添加到用途:

    使用 {$IFDEF FPC} LCLIntf,LResources,{$ENDIF}

  2. 条件编译 Delphi 形式 {$R *.dfm}:

    {$IFNDEF FPC} {$R *.dfm} {$ENDIF}

  3. 在初始化代码中添加 .lrs 资源:

    初始化 {$IFDEF FPC} {$i myunit.lrs} {$ENDIF}

0 投票
3 回答
1341 浏览

user-interface - 仅使用 FPC 的 GUI

我想知道如何在不使用 Delphi 语言(Object Pascsl)的情况下开发 GUI 应用程序(32 位),只需使用安装了 Lazarus 的 FPC(Pascal)。谢谢。

0 投票
1 回答
1000 浏览

flash - 谁能指出我在 Delphi 或 FreePascal 中的 AMF 库?

我对常见的嫌疑人(Google Code、Source Forge、SO)进行了简单的搜索,但没有找到任何关于 AMF 或 Flash/Flex 远程处理项目的提示。

有没有人偶然发现了这种性质的项目?

0 投票
1 回答
217 浏览

freepascal - fpmake.pp 使用了什么,现在还在使用吗?

我用过一次,不是很好,因为我发现很难通过一些像样的示例/文档获得,但这是完成环境的好方法。

它仍然是一个标准还是被放弃了?

我在哪里可以找到初学者的操作方法和高级方法,以便我可以在使用中成长?

谢谢。

0 投票
1 回答
1194 浏览

makefile - fpcmake 和 Makefile.fpc,我在哪里可以得到一些培训?

我从来没有使用过这些,但它们列在主要的 Free Pascal 网站上,我真的很想亲自动手:

  • 初学者指南,让我开始
  • 进阶指南,助我成长

所有这些以防它仍然被使用/标准。

谢谢

0 投票
2 回答
1978 浏览

delphi - Lazarus 应用程序中的启动画面问题

我正在将一个 Delphi 应用程序移植到 FPC/Lazarus,这个应用程序在闪屏中显示信息。当单元有初始化部分时,这个初始化部分会调用类似的东西:

这在 Delphi 中有效,但是当我使用 FPC/Lazarus 编译它时,当我使用启动屏幕创建表单时出现异常:

我发现,表单可以在Application.Initialize;调用后创建,所以我的解决方法是在ScreenInfo.Initialized=true. 它有效,但不显示所有信息。有没有办法从单元初始化部分显示启动形式,之前Application.Initialize;

0 投票
1 回答
1236 浏览

delphi - Lazarus/FPC 上的 WM_COMMAND 问题

我有 MainMenu 的表单,我想在用户从菜单中选择命令项时进行拦截。这适用于德尔福:

在 MainMenu 我添加了一些项目,当我从菜单中选择这些项目时,我的 Memo1 会填充:

我将此应用程序移植到 FPC/Lazarus,但似乎没有调用 WM_COMMAND 处理程序!当我在 Delphi 中设置断点时TForm1.WMCommand,Delphi 在主窗体出现之前停止了很多次。Lazarus 从未在这个断点上停下来。我认为 Lazarus 中的 WM_COMMAND 有问题,但也许我不知道。任何的想法?

我在 WinXP 上使用 Lazarus 0.9.28.2 beta 和 FPC 2.2.4。

编辑:

使用 Winspector 我检查了 MainMenu 生成 WM_COMMAND:

我认为 WM_COMMAND 消息方法处理中的 Lazarus/FPC 存在错误,我报告了它:http ://bugs.freepascal.org/view.php?id=15521

0 投票
1 回答
307 浏览

optimization - 为什么 WPO(整体程序优化)没有对我的程序大小做任何改进?(FPC 2.4.0)

我使用 FPC 2.4.0 for WinXP(来自官方页面的二进制文件),也尝试使用相同的版本,但从我的 comp 上的源代码编译。我放了这样的东西:

I:\pascal\fpc-2.4.0.source\fpc-2.4.0\compiler\ppc386 -FWserver-1.wpo -OWsymbolliveness -CX -XX -Xs- -al -Os -oServer1.o Server
I:\pascal\fpc-2.4.0.source\fpc-2.4.0\compiler\ppc386 -FWserver-2.wpo -OWsymbolliveness -Fwserver-1.wpo -Owsymbolliveness -CX -XX -Xs- -al -Os -oServer2.o Server
..(up to 100 times)

但总是相同的 .wpo 文件和相同的 .o 大小(.s,程序集文件间歇性更改)

我也没有(通过编译器消息),未使用的变量仍然存在。也试过 -OWall -owall 我做错了什么?