Mein Programm soll in 32bit (Delphi 10.3) laufen und nutzt die WormAPI.dll unter sdk\c\windows32\bin.
Um meine Programmierung auf Richtigkeit zu überprüfen, kontrolliere ich die Ergebnisse mit dem dortigen Programm wormGUI.
Dabei gibt es Abweichungen bei den Transaktionen zwischen meinem Programm und WormGUI, somit 2 Fragen dazu:
1. Frage: In allen Tutorials und überall im Forum wird der zu übergebende processTyp mit "KassenBeleg-V1" festgelegt. In der WormGUI aber mit "Buchung". Was ist richtig und warum? Jedenfalls ist es für Frage 2 ohne Bedeutung, was hier übergeben wird.
2. Frage: bei start und update kommen bei mir im 32bit-Modus keine Processdata in der TSE an, bei finish aber schon. Bei 64bit Kompilierung ist alles OK.
StartTransaction mit den Processdata:
"Beleg^0.00_0.00_0.00_0.00_0.00^0.00"
UpdateTransaction und FinishTransaction mit den Processdata:
Wenn ich mein Programm unter 64bit compiliere und dabei die WormAPI.dll unter sdk\c\windows64\bin nutze, ist alles OK und die Processdata sind bei start, update und finish in der TSE.
Ich habe folgende Definition für worm_uint eingestzt:
- UInt32 für stdcall in 32bit
- UInt64 für cdecl sowohl bei 32bit als auch 64bit Kompilierung.
Ist das falsch? Oder wo könnte mein Fehler noch liegen, der einen erfolgreichen TransactionStart unter 32bit verhindert, aber unter 64bit gewährleistet?
LHSoft
Mein Programm soll in 32bit (Delphi 10.3) laufen und nutzt die WormAPI.dll unter sdk\c\windows32\bin.
Um meine Programmierung auf Richtigkeit zu überprüfen, kontrolliere ich die Ergebnisse mit dem dortigen Programm wormGUI.
Dabei gibt es Abweichungen bei den Transaktionen zwischen meinem Programm und WormGUI, somit 2 Fragen dazu:
1. Frage: In allen Tutorials und überall im Forum wird der zu übergebende processTyp mit "KassenBeleg-V1" festgelegt. In der WormGUI aber mit "Buchung". Was ist richtig und warum? Jedenfalls ist es für Frage 2 ohne Bedeutung, was hier übergeben wird.
2. Frage: bei start und update kommen bei mir im 32bit-Modus keine Processdata in der TSE an, bei finish aber schon. Bei 64bit Kompilierung ist alles OK.
StartTransaction mit den Processdata:
"Beleg^0.00_0.00_0.00_0.00_0.00^0.00"
UpdateTransaction und FinishTransaction mit den Processdata:
"Beleg^100.00_0.00_0.00_0.00_0.00^10.00:Bar_10.00:Bar:AUD_10.00:Unbar_10.00:Unbar:CHF_50.00:Unbar:CZK_10.00:Unbar:USD"
Buche ich die selben Strings in sdk\c\windows32\bin\WormGUI, kommen bei Start, Update und Finish die Prozessdata an.
Die Ergebnisse von "Display Worm Store" habe ich in der angehängten Transaktionen.jpg nebeneinandergestellt.
Meine Definitionen für die 32bit cdecl (identisch mit 64bit Kompilierung, nur eben eine andere WormDLL):
function worm_transaction_start(context: PIntPtr;
const clientId: PAnsiChar;
const processData: PBytes;
processDataLength: UInt64;
const processType: PAnsiChar;
response: PIntPtr): WormError; cdecl; external WormDLL;
function worm_transaction_update(context: PIntPtr;
const clientId: PAnsiChar;
transactionNumber: UInt64;
const processData: PBytes;
processDataLength: UInt64;
const processType: PAnsiChar;
response: PIntPtr): WormError; cdecl; external WormDLL;
function worm_transaction_finish(context: PIntPtr;
const clientId: PAnsiChar;
transactionNumber: UInt64;
const processData: PBytes;
processDataLength: UInt64;
const processType: PAnsiChar;
response: PIntPtr): WormError; cdecl; external WormDLL;
Wenn ich mein Programm unter 64bit compiliere und dabei die WormAPI.dll unter sdk\c\windows64\bin nutze, ist alles OK und die Processdata sind bei start, update und finish in der TSE.
Ich habe folgende Definition für worm_uint eingestzt:
- UInt32 für stdcall in 32bit
- UInt64 für cdecl sowohl bei 32bit als auch 64bit Kompilierung.
Ist das falsch? Oder wo könnte mein Fehler noch liegen, der einen erfolgreichen TransactionStart unter 32bit verhindert, aber unter 64bit gewährleistet?
Vielen Dank für Eure Hilfe.
Hans