Delphi 電子發票開發

業務上的需求要開發電子發票的模組,前同事給了Delphi 6的範例程式,經過了一番修改後,終於在 Delphi XE3能正確使用了。
6337-1

主要的問題如下:

1) Char改 AnsiChar

2) PChar改 PAnsiChar

3) String 改 AnsiString

4) XE3 Length取長度時,也需要先以AnsiString才會正確。
主要加密元件宣告

[pascal]
procedure QRCodeINV(a_InvoiceNumber: AnsiString;
a_InvoiceDate: AnsiString;
a_InvoiceTime: AnsiString;
a_RandomNumber: AnsiString;
af_SalesAmount: Double;
af_TaxAmount: Double;
af_TotalAmount: Double;
a_BuyerIdentifier: AnsiString;
a_RepresentIdentifier: AnsiString;
a_SellerIdentifier: AnsiString;
a_BusinessIdenti: AnsiString;
a_AESKey: AnsiString;
a_output: pAnsiChar;
var ai_errorCode : Integer) STDCALL; external ‘QRDLL.DLL’;

[/pascal]

附上電子發票開發需要文件:

二代電子發票加解密API文件下載

作者: 林壽山

林壽山 目前任職於軟體公司研究開發部門主管,主要採用.net core/.net 5/6 開發,收銀機pos系統開發,第三方支付設計(綠界、馬來西亞epay/happypay、台新one碼),金流設計,行動支付設計(悠遊卡/一卡通),支付寶,微信,街口支付,信用卡機(聯合信用卡),擅長PHP網頁設計(CodeIgniter、Laravel)框架、Delphi程式設計、資料庫設計、C# WinForm/WebForm程式設計、ASP.net MVC、LINE串接、API串接設計

在〈Delphi 電子發票開發〉中有 7 則留言

  1. 林老師:請幫忙,
    我試瞭好久都有問題
    我試Delpgi7
    procedure QRCodeINV(a_InvoiceNumber: String;
    a_InvoiceDate: String;
    a_InvoiceTime: String;
    a_RandomNumber: String;
    af_SalesAmount: Double;
    af_TaxAmount: Double;
    af_TotalAmount: Double;
    a_BuyerIdentifier: String;
    a_RepresentIdentifier: String;
    a_SellerIdentifier: String;
    a_BusinessIdenti: String;
    a_AESKey: String;
    a_output: PChar;
    var ai_errorCode : Integer);stdcall;far; external ‘QRDLL.dll’;

    procedure TForm1.Button4Click(Sender: TObject);
    var out1:^PChar;
    errorCode :^integer;
    begin
    QRCodeINV(‘YC85658988’, ‘1021226’, ‘223344’, ‘3456’, 1000000, 50,1050, ‘00000000’, ‘00000000’, ‘83300307’, ‘83300307’, ‘66668888’,pAnsiChar(out1),errorCode);

    end;

    一直有問題……謝謝

  2. 執行後發生以下錯誤訊息
    請老師幫忙
    Access violation at address 100036FB in ‘QRDLL.dll’ Write of address 00458440

  3. 執行後發生
    Access violation at address 100036FB in module ‘QRDLL.dll’ Write of address 004584600

    請幫忙,謝謝!

  4. 執行後發生
    Access violation at address 100036FB in module ‘QRDLL.dll’ Write of address 004584600

    請幫忙,謝謝!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料