AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Swissbit DLL - Diverse Fragen

Ein Thema von hhcm · begonnen am 16. Dez 2019 · letzter Beitrag vom 13. Jul 2023
Antwort Antwort
Seite 1 von 3  1 23      
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 07:18
Dann muss es was anderes sein.
Auch in dieser Variante sagt 7-Zip mir, Die Datei kann nicht als Archiv geöffnet werden.

Entpacken über Linux bringt mich aber glaube ich weiter.

Code:
time stamp 2019-12-18 09:07:44 is 3133.460484916 s in the future
Chris
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#2

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 07:21
Hast Du die aktuelle Version von 7-zip? Ich hatte auch erst eine veraltete, die aktuelle kann aber mit dem Archiv umgehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
541 Beiträge
 
Delphi 12 Athens
 
#3

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 09:07
Ich habe da auch noch einige Probleme mit meiner Swissbit-TSE.

Es geht einiges: Reset, Init,Setup, Settime, Transactionen, Seriennummer auslesen, PublicKey auslesen.

Was (noch) nicht geht ist:

Zusätzlichen Client anlegen Fehler 3 (IO Error), versuche ich so:

Function worm_tse_registerClient(context:pointer;clientid:p ansichar):integer;cdecl; external 'WormAPI.dll';

Clients auslesen Fehler 1 Wrong Input Parameter

Dann noch Dinge die mich um die Praxistauglichkeit fürchten lassen:

Nach Startendes Rechners aus dem Ruhezustand oft keine Funktion; nicht mal Init geht dann.
Abhilfe ist dann Karte rausnehmen und wieder einstecken.



Beim Einstecken fast regelmäßig Meldung von Windows das Laufwerk muss repariert werden, was ich Windows auch machen lasse da sonst oft kein Funktion
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 09:23
Function worm_tse_registerClient(context:pointer;clientid:p ansichar):integer;cdecl; external 'WormAPI.dll';
Wie rufst du die Funktion auf?

worm_tse_registerClient(context, PAnsiChar('Client4711')); Bei mir geht das ohne Fehler.
Chris
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#5

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 09:36
Bei mir auch. Allerdings kenne ich das Problem mit dem Ruhezustand auch, eine komplette Neuinitialisierung funktioniert aber zum Glück meistens.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
622 Beiträge
 
Delphi XE6 Enterprise
 
#6

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 09:51
Dann noch Dinge die mich um die Praxistauglichkeit fürchten lassen:

Nach Startendes Rechners aus dem Ruhezustand oft keine Funktion; nicht mal Init geht dann.
Abhilfe ist dann Karte rausnehmen und wieder einstecken.
Das haben wir schon bei der RKSV-Lösung gelernt: wenn eine Sicherheitseinrichtung im PC steckt, muss der Windows-Schnellstart deaktiviert werden.
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 10:09
Clients auslesen Fehler 1 Wrong Input Parameter
Das hab ich wie folgt gelöst. (Geht bestimmt schöner)

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;
Chris
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
541 Beiträge
 
Delphi 12 Athens
 
#8

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 16:27
Danke, das funktioniert.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 16:57
Danke, das funktioniert.


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:
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;
Hat da jemand eine Erklärung zu?
Chris
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Swissbit DLL - Diverse Fragen

  Alt 18. Dez 2019, 22:04
Hat sich erledigt

Ich sollte natürlich nur den Pointer (response_pointer) und nicht die Klasse Repsonse übergeben.
Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 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