Delphi 跨平台_delphi调用api接口

Delphi 跨平台_delphi调用api接口DELPHI是怎么实现跨平台的?

大家好,又见面了,我是你们的朋友全栈君。

DELPHI是怎么实现跨平台的?

首先跨平台必须要兼容原来的语法,以线程的临界区对象为例:

TCriticalSection = class(TSynchroObject)
{$IFDEF POSIX}
private type
TCritSec = record
FSync: TObject;
procedure Initialize; inline;
procedure Free; inline;
procedure Enter; inline;
procedure Leave; inline;
function TryEnter: Boolean; inline;
end;
{$ENDIF POSIX}
protected
{$IFDEF MSWINDOWS}
FSection: TRTLCriticalSection;
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
FSection: TCritSec;
{$ENDIF POSIX}
public
constructor Create;
destructor Destroy; override;
procedure Acquire; override;
procedure Release; override;
function TryEnter: Boolean;
procedure Enter; inline;
procedure Leave; inline;
end;

可以看出,已经不单是原来的从WINDOWS OS临界封装,通过{$IFDEF POSIX}跨平台编译开关,增加了跨平台的封装。

 

下面再以线程类TThread为例:

TThread = class
private type
PSynchronizeRecord = ^TSynchronizeRecord;
TSynchronizeRecord = record
FThread: TObject;
FMethod: TThreadMethod;
FProcedure: TThreadProcedure;
FSynchronizeException: TObject;
end;
private class var
FProcessorCount: Integer;
private
FThreadID: TThreadID;
{$IF Defined(MSWINDOWS)}
FHandle: THandle platform;
{$ELSEIF Defined(POSIX)}
FCreateSuspendedMutex: pthread_mutex_t;
FInitialSuspendDone: Boolean;
{$ENDIF POSIX}
FStarted: Boolean;
FCreateSuspended: Boolean;
FTerminated: Boolean;
FSuspended: Boolean;
FFreeOnTerminate: Boolean;
FFinished: Boolean;
FReturnValue: Integer;

。。。。。。

也和临界区类一样用跨平台编译开关封装了跨平台代码进来。

从上面的2个例子可以看出,DELPHI为了跨平台,对RTL进行了艰苦卓绝的巨大修改,这个工程无疑是浩大的。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107081.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java this 关键字用法

    Java this 关键字用法介绍Java中this关键字的用法,包括在构造方法中this关键字的用法,非在构造方法中this关键字的用法,继承关系下this关键字含义的变化,以及super和this关键字的异同。

    2022年6月25日
  • HDU1754_I Hate It(线段树/单点更新)

    HDU1754_I Hate It(线段树/单点更新)

    2022年1月21日
  • 个性化推荐算法总结[通俗易懂]

    个性化推荐算法总结[通俗易懂]读书笔记|《推荐系统实践》-个性化推荐系统总结对于推荐系统,本文总结内容,如下图所示:一、什么是推荐系统1.为什么需要推荐系统为了解决互联网时代下的信息超载问题。2.搜索引擎与推荐系统分类目录,是将著名网站分门别类,从而方便用户根据类别查找公司。 搜索引擎,用户通过输入关键字,查找自己需要的信息。 推荐系统,和搜索引擎一样,是一种帮助用户快速发展有用信…

    2022年5月2日
  • ZMQ 指南_广州南沙区全员核酸检测

    ZMQ 指南_广州南沙区全员核酸检测ZMQ指南原文github连接 作者:PieterHintjens ph@imatix.com,CEOiMatixCorporation. 翻译:张吉 jizhang@anjuke.com,安居客集团好租网工程师WiththankstoBillDesmarais,BrianDorsey,CAF,DanielLin,EricDesgranges,Gonzal…

    2022年11月3日
  • android将字符串转化为json,将string转换为JsonArray「建议收藏」

    android将字符串转化为json,将string转换为JsonArray「建议收藏」只是在这里混合另一种方法,我想build议看看Gson。Gson是一个使Java对象序列化和反序列化的库。例如,用你的string,你可以这样做://DeclarethesesomewherethatisontheclasspathpublicclassArrayItem{publicintid;publicdoubleatt1;publicboole…

    2022年6月20日
  • Python保留小数又不想四舍五入咋办?

    Python保留小数又不想四舍五入咋办?保留小数又不想四舍五入咋办?找了一会不知道用什么函数实现,突然想到可以这样…a=25.35568a=a-a%0.01print(a)

    2022年8月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号