lazarus 函数 eoln 怎么用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lazarus 函数 eoln 怎么用?相关的知识,希望对你有一定的参考价值。

用FP/C++/C
str(i,s) 过程,将一个整数i转换成字符串S,str(i,s);
Copy(s,i,len)函数,在字符串S中从i位置开始取len个字符,St:=copy(s,i,n);
Length(s) 函数,求字符串S的长度,A:=length(s);
Pos(st1,st2) 函数,求st1字符串在st2字符串中的开始位置,A:=Pos(st1,st2);
Delete(s,i,len)过程,在字符串S中从i位置开始删除len个字符,Delete(s,pos,len);
Insert(st1,st,i)过程,在ST字符串第I个位置插入字符串ST1,Insert(st1,st,i);
Val(st,r,c)过程,将字符串st转换成数值赋值给r,如果字符串中存在非数值型字符,则用c返回它的位置,否则C的值为0。
Val(st,r,c);
sqrt(x)函数,求x的平方根,Y:=strt(x)
ord (x)函数,求字符x的ASCII码序号,Y:=ord(x)
chr(x) 函数,求数值x的对应的字符,Ch:=chr(x)

楼下给的那些函数最少有一半是禁用的
参考技术A eoln是个函数,判断输入是否指向该行的最后,返回值是true或false
譬如一个程序:
var a,b,c:integer;
begin
read(a,b,c);
if eoln then write('true') else write('false');
end.
输入一:
7 8 9
输出:
输入二:
7 8 9 0
输出:false
输入三:
7
8 9
输出:true
输入四:
7 8 9
9 8 7
输出:true
(注:行末数据后面均无空格)
相关用法还有eof(判断是否读完)。就文本处理而言,个人觉得eof 比eoln更实用。

由于架构不匹配,将静态库从 Xcode 链接到 Lazarus 应用程序失败

【中文标题】由于架构不匹配,将静态库从 Xcode 链接到 Lazarus 应用程序失败【英文标题】:Linking static library from Xcode into Lazarus app fails on architecture mismatch 【发布时间】:2015-03-02 22:57:57 【问题描述】:

在这里进行大量研究并通过 Google 链接进行深入探索,但无济于事。

我用 OSX Xcode (5) 制作了一个简单的、一个函数的静态 C 库,我试图将其链接到 Lazarus 应用程序,基本上是将 Xcode 函数从 Xcode 移植到 Lazarus。

Xcode 可以构建静态库,我在 Lazarus 应用程序中似乎有正确的链接代码,如下所示:

type
byteptr = ^byte;

const
libname = 'libLORaudio.a';

function LORaudioPlay (fd : longint; audio : byteptr): Integer;
     cdecl; external libname;

r := LORaudioPlay(e, z);

所有这些都编译得很好,但是构建失败并显示以下消息:

Id: symbol(s) not found for architecture i386
Id: Warning: ignoring file libLORaudio.a, file was built for archive which is not the architecture being linked (i386): libLORaudio.a

(and it goes on to say the function is undefined, of course, since it ignored the library that supplies it.)

我的问题可以通过两种方式中的任何一种来解决,但我都没有在网上或 Xcode 或 Lazarus 中找到足够的信息。

一种解决方案是让 Xcode 生成具有 Lazarus 预期架构的静态库。我已经尝试了各种选项来设置 Xcode 中的其他类似问题的答案中提到的构建架构,但似乎我没有正确完成它们,因为它们都不适合我。

另一个解决方案是让 Lazarus 接受 Xcode 生成的架构。 Laz.y 文档在这方面没有帮助。

我可以尝试任何建议吗?非常感谢您的考虑。

【问题讨论】:

我猜你已经为不同于 Lazarus/FPC 的架构(如警告文本中提到的 i386)编译了你的库。尝试在库的构建模式中设置 32 位架构。 @Abelisto 绝对是架构不匹配。我尝试了多种方法让 Xcode 接受 32 位架构规范,但它只接受原来的“i386 x86_64”。构建设置是否有一些后门? 不确定,我对 OS X 不熟悉。但是您也可以尝试在 Lazarus 项目选项(“配置和目标”页面)中更改目标操作系统和处理器。 Here你可以下载安装合适的FPC。据我了解,您需要fpc-2.6.4.intel-ppc64-macosx.dmg(检查版本,它必须与已安装的FPC相同)。 【参考方案1】:

所以最终,我用 Finder 搜索并找到了(见下文)我分别在哪里构建了 x86_64 和 i386 目标文件来解决问题。这是通过将架构的构建设置更改为“i386”来完成的。 'x86_64' 的后续重建并未删除之前的 i386 对象信息。

然后我将 i386 目标文件复制到包含 Lazarus 项目的文件夹中(必须使用 alt-option 拖动方法进行复制,因为复制然后粘贴不起作用)。

在那里,我在终端中运行了 ar,如:'ar -r -s libname.a name.o' 以从对象构建静态库。

Lazarus 现在可以根据需要处理库。 (当然,这揭示了一些需要处理的其他错误情况,但是,嘿,进步发生了。)

Xcode 已将对象的两个版本都放在一个文件夹中。通过右键单击项目导航器中提到的产品并选择“在查找器中显示”,从 Xcode 中找到这些产品。您可以为当前拥有的任何架构执行此操作;两者都导致相同的构建文件夹。从那里通过包含文件夹的方式备份,直到您发现 Build。打开它并在包含的文件夹中继续前进,直到到达 Objects-normal。在那里你会找到 i386 和 x86_64 的文件夹。这些文件夹中的每一个都包含相应的对象文件,例如 name.o 以及其他与产品相关的文件。

【讨论】:

以上是关于lazarus 函数 eoln 怎么用?的主要内容,如果未能解决你的问题,请参考以下文章

Lazarus是啥?

LAZARUS是啥软件呀???哪位高手知道?我想学这个怎么样呢?

lazarus处理汉字

用 Lazarus 开发 OPC Client 2 (关于Lazarus 编译器)

用 Lazarus 开发 OPC Client 1 (关于字符集)

用Lazarus编写第一个程序Pascal版的hello world