欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python調用Delphi寫的Dll代碼示例

 更新時間:2017年12月05日 09:05:01   作者:garfieldtom  
這篇文章主要介紹了python調用Delphi寫的Dll代碼示例,具有一定參考價值,需要的朋友可以了解下。

首先看下Delphi單元文件基本結構:

unit Unit1;  //單元文件名 
interface   //這是接口關鍵字,用它來標識文件所調用的單元文件 
uses     //程序用到的公共單元 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; 

type     //這里定義了程序所用的組件,一些類,以及組件所對應的過程、事件 
TForm1 = class(TForm) 
private   //定義私有變量和私有過程 
  { Private declarations }
public   //定義公共變量和公共過程 
  { Public declarations }
end; 
  
var      //定義程序使用的公共變量 
Form1: TForm1; 

implementation //程序代碼實現(xiàn)部分 

{$R *.dfm}
  
end. 

Delphi單元如下(輸出hello.dll):

unit hellofun;

interface

function getint():integer;stdcall;
function sayhello(var sname:PAnsiChar):PAnsiChar;stdcall;
implementation

function getint():integer;stdcall;
begin
 result:=888;
end;
function sayhello(var sname:PAnsiChar):PAnsiChar;stdcall;
begin
 sname:='ok!';
 result:='hello,garfield !';
end;

end.
library hello;

{ Important note about DLL memory management: ShareMem must be the
 first unit in your library's USES clause AND your project's (select
 Project-View Source) USES clause if your DLL exports any procedures or
 functions that pass strings as parameters or function results. This
 applies to all strings passed to and from your DLL--even those that
 are nested in records and classes. ShareMem is the interface unit to
 the BORLNDMM.DLL shared memory manager, which must be deployed along
 with your DLL. To avoid using BORLNDMM.DLL, pass string information
 using PChar or ShortString parameters. }

uses
 System.SysUtils,
 System.Classes,
 hellofun in 'hellofun.pas';

{$R *.res}

exports
 getint,
 sayhello;

begin
end.

python中調用如下:

import ctypes

def main():
  dll=ctypes.windll.LoadLibrary("hello.dll")
  ri=dll.getint()
  print(ri)

  s=ctypes.c_char_p()
  rs=ctypes.c_char_p()
  rs=dll.sayhello(ctypes.byref(s))
  print(s)
  print(ctypes.c_char_p(rs))

if __name__ == '__main__':
  main()

運行Python,輸出如下:

>>> 
888
c_char_p(b'ok!')
c_char_p(b'hello,garfield !')
>>> 

好了,我們可以讓python完成部分功能在Delphi中調用,也可以用Delphi完成部分功能在Python中調用。

以上程序在DelphiXE2及Python3.2中調試通過。

總結

以上就是本文關于python調用Delphi寫的Dll代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • Python中多線程的創(chuàng)建及基本調用方法

    Python中多線程的創(chuàng)建及基本調用方法

    由于注明的GIL的存在,Python盡管能創(chuàng)建多個線程,但是多線程卻不能同時工作...well,這里我們來看一下Python中多線程的創(chuàng)建及基本調用方法
    2016-07-07
  • 合并Excel工作薄中成績表的VBA代碼,非常適合教育一線的朋友

    合并Excel工作薄中成績表的VBA代碼,非常適合教育一線的朋友

    每次學生考試,評分完畢之后,把每個科的成績收集起來,就得到了一個有若干工作表,每個表有學生學號、分數(shù)等列的Excel工作薄。
    2009-04-04
  • python處理json文件的四個常用函數(shù)

    python處理json文件的四個常用函數(shù)

    這篇文章主要介紹了python處理json文件的四個常用函數(shù),主要包括json.load()和json.dump()及json.loads()還有json.dumps(),需要的朋友可以參考一下
    2022-07-07
  • python使用pynput庫操作、監(jiān)控你的鼠標和鍵盤

    python使用pynput庫操作、監(jiān)控你的鼠標和鍵盤

    這篇文章主要介紹了python使用pynput庫操作、監(jiān)控你的鼠標和鍵盤,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python 合并多個TXT文件并統(tǒng)計詞頻的實現(xiàn)

    Python 合并多個TXT文件并統(tǒng)計詞頻的實現(xiàn)

    這篇文章主要介紹了Python 合并多個TXT文件并統(tǒng)計詞頻的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 詳解如何用Python模擬登錄淘寶

    詳解如何用Python模擬登錄淘寶

    最近想爬取淘寶的一些商品,但是發(fā)現(xiàn)如果要使用搜索等一些功能時基本都需要登錄,所以就想出一篇模擬登錄淘寶的文章!本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 信號生成及DFT的python實現(xiàn)方式

    信號生成及DFT的python實現(xiàn)方式

    今天小編就為大家分享一篇信號生成及DFT的python實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python光學仿真學習處理高斯光束分布圖像

    Python光學仿真學習處理高斯光束分布圖像

    這篇文章主要為大家介紹了Python光學仿真學習之如何處理高斯光束的分布圖像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • Python實現(xiàn)最常見加密方式詳解

    Python實現(xiàn)最常見加密方式詳解

    這篇文章主要介紹了Python實現(xiàn)最常見加密方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python中實現(xiàn)常量(Const)功能

    Python中實現(xiàn)常量(Const)功能

    這篇文章主要介紹了Python中實現(xiàn)常量(Const)功能,python語言本身沒有提供const,本文使用一個類來實現(xiàn)常量定義功能,并介紹了使用方法,需要的朋友可以參考下
    2015-01-01

最新評論