前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Delphi 跨平台_delphi调用api接口

Delphi 跨平台_delphi调用api接口

作者头像
全栈程序员站长
发布2022-08-04 12:35:43
1.9K0
发布2022-08-04 12:35:43
举报
文章被收录于专栏:全栈程序员必看

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

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.cn/107081.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档