AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DLL Schnitstelle

Ein Thema von hewy · begonnen am 10. Jul 2020 · letzter Beitrag vom 7. Aug 2020
Antwort Antwort
Seite 3 von 4     123 4   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.701 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:06
Zitat:
VB Verwendet die gleiche DLL und bekommt einen Pointer und kann den Wert (CertificationID) abholen.
Mein Delphi Code nicht??
Also ist möglicherweise im oberen Bereich /* 2: ---- oder /* 3: ---- etwas falsch.
siehe #19 und #16 ... k.A. was man da sonst noch sagen soll.

Das sind allgemeine Grundlagen, die fast überall gleich sind, weil Viele es so machen.


Ich hoffe nur jemand macht sein teures Wormlaufwerk nicht kaputt.
Quelle: https://xbaseforum.de/viewtopic.php?p=132766
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#22

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:09
Ja richtig danke für den Hinweis!
Sollte heissen:
if CertificationID <> nil then
begin
Heinrich Wyssen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.402 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:16
Einmal grundsätzlich: man übergibt 2 Parameter an die Funktion, die auch beide von der DLL überschrieben werden, Rückgabe ist ein Fehlercode. Daraus folgt, dass man auch beide Parameter als Var-Parameter deklarieren muss. Ich habe die Cryptovision-API gerade nicht zur Hand, aber mit ziemlicher Sicherheit gibt die Funktion im 2. Parameter entweder die Anzahl der tatsächlich geschriebenen Bytes des 1. Parameters zurück, oder falls dieser zu knapp dimensioniert ist, die Anzahl der benötigten Bytes. Man kann nun also die benötigten Bytes ermitteln, indem man die Funktion mit den Werten nil für den PAnsiChar und 0 für die Länge übergibt. Anschließend wertet man die zurückgegebene Länge (deshalb Var-Parameter) aus, reserviert entsprechenden Speicher und übergibt diesen dann wie vorhin schon einmal erwähnt.
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
hewy

Registriert seit: 2. Aug 2006
Ort: Arni (Region Zürich) Schweiz
56 Beiträge
 
Delphi XE5 Enterprise
 
#24

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:24
Heiii danke DeddyH das war das Problem.

function se_getCertificationId(var certificationId: PAnsiChar; certificationIdLength: Cardinal): Cardinal; cdecl; external 'se-api-c.dll';
Geändert zu:
function se_getCertificationId(var certificationId: PAnsiChar; var certificationIdLength: Cardinal): Cardinal; cdecl; external 'se-api-c.dll';

Und schon funzt alles.
Viele Dank. Auch an alle Andern die an meiner 30 Jährigen Delphi Erfahrung gezweifelt haben.

Heiri
Heinrich Wyssen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.402 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:29
Ja, immer diese dummen Sternchen in C, die kann man leicht übersehen
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
venice2

Registriert seit: 5. Dez 2019
Ort: Köln
969 Beiträge
 
Delphi 2010 Architect
 
#26

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:32
Ja, immer diese dummen Sternchen in C, die kann man leicht übersehen
Zitat:
Viele Dank. Auch an alle Andern die an meiner 30 Jährigen Delphi Erfahrung gezweifelt haben.
Was für ein Ärger aber auch das String nicht gleich PAnsiChar ist.
Wie dem auch sei.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.402 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:33
Was willst Du mir mit diesem Kommentar mitteilen?
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
venice2

Registriert seit: 5. Dez 2019
Ort: Köln
969 Beiträge
 
Delphi 2010 Architect
 
#28

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:34
Was willst Du mir mit diesem Kommentar mitteilen?
Dir nichts. bzw. Im bezug auf die Sternchen die nun mal keinen String repräsentieren.

Geändert von venice2 (11. Jul 2020 um 14:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.701 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: DLL Schnitstelle

  Alt 11. Jul 2020, 14:50
Zitat:
Was für ein Ärger aber auch das String nicht gleich PAnsiChar ist.
String ist PChar und da das ein compilerabhängeriger Typ ist, kann es auch passieren, dass im Jahr 2009 das von ANSI zu Unicode wechselte.

String/PChar = AnsiString/PAnsiChar bis Delphi 2007
String/PChar = UnicodeString/PWideChar seit Delphi 2009

und nicht zu verwechseln mit WideString, welches kein Delphi-Typ ist, sondern nur die Kapselung der OLE32-String-API.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (12. Jul 2020 um 13:28 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
2.940 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#30

AW: DLL Schnitstelle

  Alt 12. Jul 2020, 12:43
Heiii danke DeddyH das war das Problem.

function se_getCertificationId(var certificationId: PAnsiChar; certificationIdLength: Cardinal): Cardinal; cdecl; external 'se-api-c.dll';
Geändert zu:
function se_getCertificationId(var certificationId: PAnsiChar; var certificationIdLength: Cardinal): Cardinal; cdecl; external 'se-api-c.dll';

Und schon funzt alles.
Viele Dank. Auch an alle Andern die an meiner 30 Jährigen Delphi Erfahrung gezweifelt haben.

Heiri
Meine Güte, da guckt man auf'n Sonntagmittag in den Thread, sieht ein Haufen Im-Kreis-Gewixe um unwichtige Details und Nichtigkeiten, nur um dann festzustellen, dass die RICHTIGE Lösung aus Beitrag Nummer ZWEI (Hinweis: Translation Nr. 2) schließlich auf der DRITTEN Seite von jemand anderen nochmal gefunden/kopiert wurde.

Hewy, dreißig Jahre Delphi-Erfahrung sind zwar gut und schön, aber mit dreißig Sekunden erhöhtem Leseverständnisses und/oder stumpfen Ausprobieren meiner Vorschläge hätte viel Zeit und Nerven aller Beteiligten gespart werden können.

Geändert von TiGü (12. Jul 2020 um 16:18 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf