業務上的需求要開發電子發票的模組,前同事給了Delphi 6的範例程式,經過了一番修改後,終於在 Delphi XE3能正確使用了。
主要的問題如下:
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]
附上電子發票開發需要文件:
林老師:請幫忙,
我試瞭好久都有問題
我試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;
一直有問題……謝謝
QrDLL.dll有在執行檔路徑?
出單機支援QRcode?
QrDLL.dll 有在執行檔路徑
出單機有支援QRcode
執行後發生以下錯誤訊息
請老師幫忙
Access violation at address 100036FB in ‘QRDLL.dll’ Write of address 00458440
執行後發生
Access violation at address 100036FB in module ‘QRDLL.dll’ Write of address 004584600
請幫忙,謝謝!
執行後發生
Access violation at address 100036FB in module ‘QRDLL.dll’ Write of address 004584600
請幫忙,謝謝!
方便將源碼賣給我嗎? 費用多少?
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);safecall ; far; external ‘QRDLL.dll’ ; //;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
out1:string;
errorCode :integer;
begin
SetLength (out1, 78);
QRCodeINV(‘AS45678000’, ‘1001231’, ‘223344’, ‘3456’, 1000000, 50,1050, ‘00000000’, ‘00000000’, ‘83300307’, ‘83300307’, ’05D4A324ABAF4A570E64E572221E438B’,pChar(out1),errorCode);
showmessage(inttostr(errorCode));
showmessage(out1);
end;