![]() |
AW: Swissbit DLL - Diverse Fragen
Bei mir auch. Allerdings kenne ich das Problem mit dem Ruhezustand auch, eine komplette Neuinitialisierung funktioniert aber zum Glück meistens.
|
AW: Swissbit DLL - Diverse Fragen
Zitat:
|
AW: Swissbit DLL - Diverse Fragen
Zitat:
Delphi-Quellcode:
type
TClientId = array [0..30] of AnsiChar; TWormClients = packed record amount: Integer; clientIds: array [0..16] of TClientId; end; PWormClients = ^TWormClients; function worm_tse_listRegisteredClients(context: IntPtr; toSkip: Integer; clients: PWormClients): Integer; cdecl; external 'WormAPI.dll'; ... var res, i: Integer; clients: PWormClients; tmp: AnsiString; begin res := worm_tse_listRegisteredClients(worm_context, 0, clients); if (res <> 0) then raise EWormException.Create(res); for i := 0 to clients.amount - 1 do begin tmp := clients.clientIds[i]; // Mach was mit den ClientID´s end; end; |
AW: Swissbit DLL - Diverse Fragen
Danke, das funktioniert.
|
AW: Swissbit DLL - Diverse Fragen
Zitat:
Jetzt dachte ich, langsam hab ich die API komplett verstanden, jetzt häng ich schon wieder seit Stunden an den Transaktionen. Eine Lognachricht wird in der TSE gespeichert, ich bekomme aber kein WormTransactionResponse hin. Eigentlich habe ich soweit das C# Programm nachgeahmt - heißt - alles in Klassen verpackt.
Delphi-Quellcode:
Hat da jemand eine Erklärung zu? :shock:
function worm_transaction_response_new(context: IntPtr): IntPtr; cdecl; external 'WormAPI.dll';
procedure worm_transaction_response_free(const response_pointer: IntPtr); cdecl; external 'WormAPI.dll'; function worm_transaction_response_transactionNumber(const response_pointer: IntPtr): worm_uint; cdecl; external 'WormAPI.dll'; function worm_transaction_start(context: IntPtr; clientId: PAnsiChar; processData: PByte; processDataLength: worm_uint; processType: PAnsiChar; response: Pointer): Integer; cdecl; external 'WormAPI.dll'; type WormTransactionResponse = class private response_pointer: IntPtr; public constructor Create(worm_context: IntPtr); destructor Destroy; Override; function TransactionNumber: worm_uint; end; implementation constructor WormTransactionResponse.Create(worm_context: IntPtr); begin response_pointer := worm_transaction_response_new(worm_context); // Hier bekomme ich eine Adresse. end; destructor WormTransactionResponse.Destroy; begin worm_transaction_response_free(response_pointer); inherited; end; function WormTransactionResponse.TransactionNumber: worm_uint; begin result := worm_transaction_response_transactionNumber(response_pointer); end; ... var res: Integer; Response: WormTransactionResponse; transId: worm_uint; begin Response := WormTransactionResponse.Create(worm_context); // Hier ist Response scheinbar gültig // Mache ich hier Response.Free ist alles gut. Heisst ich habe eine gültige Adresse. try res := worm_transaction_start(worm_context, PAnsiChar(clientId), nil, 0, PAnsiChar(processType), @Response); // res ist 0 . Aber die Adresse von Response hat sich verändert if (res <> 0) then raise EWormException.Create(res); transId := Response.TransactionNumber; // Hier Krachts, da Response auf eine falsche Adresse zeigt. finally Response.Free; end; end; |
AW: Swissbit DLL - Diverse Fragen
Hat sich erledigt :roll:
Ich sollte natürlich nur den Pointer (response_pointer) und nicht die Klasse Repsonse übergeben. |
AW: Swissbit DLL - Diverse Fragen
Kann die Swissbit TSE eigentlich an eine VM (VMware 15.5) "durchgereicht" werden?
|
AW: Swissbit DLL - Diverse Fragen
Ist nicht die direkte Antwort auf die Frage - Mit HyperV hab ich´s jedenfalls noch nicht hinbekommen.
Die Swissbit TSE erwartet als Mountpoint einen Laufwerksbuchstaben. Das ist Tricky |
AW: Swissbit DLL - Diverse Fragen
Hi,
hier scheinen ja viele Leidensgenossen auf dem Weg nach Canossa zu sein :-) Also die "Objekte", die in der DLL lauern, habe ich mit IntPtr angesprochen Für Bytefelder wie PINs habe ich mir einen hübschen Objekttyp gebacken, der das Member B: TUnchar mit TUnChar = array of Byte enthält Clientid ist bei mir ansistring, wird aber mit pansichar(client) übergeben (beim Neuregistrieren eines Clienten) Das Responseobjekt ist auch ein IntPtr, ebenso die Kollegen Wormcontext und Worminfo Um ein TAR-Archiv vernünftig ansehen zu können braucht man das Programm "AmadeusVerify", falls man an Gastrmist gebunden ist. Im dortigen Forum ist auch ein nachvollziehbares Beispiel zum TAR-Export. Man programmiere gleich den gefilterten Export, das braucht man sowieso irgendwann. Beim Auslesen der Finish-Signatur ist mir was Lustuges passiert: Das Programm funktioniert nicht in der IDE, wenn der Debugger dranhängt. Siehe mein anderer Thread von heute in Delphi-IDE So, ich hoffe wir bleiben in Verbindung und können uns helfen. ism :-D |
AW: Swissbit DLL - Diverse Fragen
Hallo,
nochmal zum Zertifikat: Wo in der Doku habt Ihr worm_getLogMessageCertificate() aufgetrieben ? Gruss ism |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz