• C++中的DLL,Delphi调用需要注意之一


    本人C++是个菜鸟,

    C++编写的DLL,Delphi调用,先弄个简单的C++的DLL;

    --------------------------------------

    C++ 

     

     

     ------------------------------

    Delphi:

    -------------------Unit

    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    PMyrecord=^Myrecord;
    Myrecord=record
    ss:array[0..9] of AnsiChar ;
    ii:Integer ;
    end;

    PACS_ELEVATOR_SET=^ACS_ELEVATOR_SET;
    ACS_ELEVATOR_SET=record
    ForbidCardType:LongWord; // 禁止的卡片类型
    StartTime1:array[0..8] of AnsiChar; // 起始时间1: 字符串, 8个字符, 格式 hh:mm:ss
    EndTime1:array[0..8] of AnsiChar; // 结束时间1: 字符串, 8个字符, 格式 hh:mm:ss
    StartTime2:array[0..8] of AnsiChar; // 起始时间2: 字符串, 8个字符, 格式 hh:mm:ss
    EndTime2:array[0..8] of AnsiChar; // 结束时间2: 字符串, 8个字符, 格式 hh:mm:ss
    cRFU1:array[0..99] of AnsiChar ; // 预留
    cRFU2:array[0..99] of AnsiChar ; // 预留
    iRFU1:LongWord; // 预留
    iRFU2:LongWord; // 预留
    iRFU3:LongWord; // 预留
    iRFU4:LongWord; // 预留
    end;
    var
    Form1: TForm1;

    implementation
    function Ass(Myc:Myrecord):Integer;stdcall;external 'MyC_FirstDLL.dll' name 'Test001';
    function Bss(Myc:PMyrecord):Integer;stdcall;external 'MyC_FirstDLL.dll' name 'Test002';
    function Css(Myc:ACS_ELEVATOR_SET):Integer;stdcall;external 'MyC_FirstDLL.dll' name 'Test003';
    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var
    mys:Myrecord;
    begin
    mys.ss[0]:='A';
    mys.ii:=10;
    ShowMessage(IntToStr(Ass(mys)));

    end;

    procedure TForm1.Button2Click(Sender: TObject);

    var
    mys:Myrecord;
    ss:string;
    i:Integer;
    begin
    for i:=0 to 9 do
    begin
    mys.ss[i]:=Char($0);
    end;
    mys.ss[0]:='A';
    mys.ii:=10;
    ShowMessage(IntToStr(Bss(@mys)));
    ShowMessage(AnsiString (mys.ss));

    end;

    procedure TForm1.Button3Click(Sender: TObject);
    var
    i:Integer;
    sStartTime1,sEndTime1,sStartTime2,sEndTime2:string;
    vpara:ACS_ELEVATOR_SET;
    begin
    sStartTime1:='12:12'+':00' ;
    sEndTime1:='12:12'+':00' ;
    sStartTime2:='12:12'+':00' ;
    sEndTime2:='12:12'+':00' ;
    vpara.ForbidCardType :=2;
    for i:=0 to 8 do
    begin
    vpara.StartTime1[i]:=Char($0);
    vpara.EndTime1[i]:=Char($0) ;
    vpara.StartTime2[i]:=Char($0);
    vpara.EndTime2[i]:=Char($0) ;
    end;
    for i:=0 to 7 do
    begin
    vpara.StartTime1[i]:=sStartTime1[i+1];
    vpara.EndTime1[i]:=sEndTime1[i+1] ;
    vpara.StartTime2[i]:=sStartTime2[i+1];
    vpara.EndTime2[i]:=sEndTime2[i+1] ;
    end;
    ShowMessage(IntToStr(Css(vpara)));
    end;

    end.

    ------------Form

    object Form1: TForm1
    Left = 868
    Top = 524
    Width = 288
    Height = 364
    Caption = 'Form1'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object Button1: TButton
    Left = 8
    Top = 16
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
    end
    object Button2: TButton
    Left = 8
    Top = 48
    Width = 75
    Height = 25
    Caption = 'Button2'
    TabOrder = 1
    OnClick = Button2Click
    end
    object Button3: TButton
    Left = 112
    Top = 288
    Width = 75
    Height = 25
    Caption = 'Button3'
    TabOrder = 2
    OnClick = Button3Click
    end
    end

  • 相关阅读:
    基于C#.NET C/S架构的生产看板管理系统软件开发框架平台
    VS.NET后端框架,C#.NET开发的服务器端开发框架
    开源.NET开发架构.NET管理系统框架-原创作品
    开源.NET开发架构 .NET管理系统框架
    基于MVC架构的WebApi服务端开发框架核心优势|C/S框架网原创作品
    基于C#.NET三层架构物流运输管理系统(TMS)-C/S框架网原创作品
    C#Winform+SQL开发的基于C/S架构大型ERP系统
    MES系统框架及MES开源框架|C/S框架网软著产品
    C#.NET程序升级框架之软件版本自动升级系统
    原创C/S应用程序开发平台与.NET快速开发框架
  • 原文地址:https://www.cnblogs.com/dmqhjp/p/14228997.html
Copyright © 2020-2023  润新知