RKSV Lib
Moderator: wriedmann
RKSV Lib
Hallo Wolfgang,
anbei die Lib, dazu noch eine Frage:
Du hast ja mal gesagt, dass die Dlls im Programmordner liegen müssen. Die Installationsroutine von ITG installiert alles unter c:program filesITG ConsultingRKSVComComplete. Werden die Dlls dort gefunden, wenn das eigentliche X# Programm irgendwo anders installiert ist?
anbei die Lib, dazu noch eine Frage:
Du hast ja mal gesagt, dass die Dlls im Programmordner liegen müssen. Die Installationsroutine von ITG installiert alles unter c:program filesITG ConsultingRKSVComComplete. Werden die Dlls dort gefunden, wenn das eigentliche X# Programm irgendwo anders installiert ist?
- Attachments
-
- _RKSV 1.76.zip
- (26.04 KiB) Downloaded 60 times
RKSV Lib
Hallo Franz,
irgendwie scheint es da ein Problem mit dem Namen RKSV zu geben.
In den C#-DLLs wird der verwendet, und das scheint ein Problem mit der impliziten Namespaces zu geben.
Wenn ich den Namen der Klasse ändere, kompiliert es tadellos, ebenso wenn ich die Klasse RKSV in einen eigenen Namespace verpacke.
Ich habe aber trotzdem eine Lösung gefunden:
Wenn Du hier explizit einen Namespace angibst, kompiliert das Ding: Was die DLLs und das Verzeichnis angeht: auf Deinem Rechner ist das kein Problem, weil die XIDE die Assemblies ins Bin-Verzeichnis kopiert - kannst Du gerne nachprüfen.
Auf dem Kunden-Rechner musst Du das machen, außer der Hersteller wirft die Assemblies in den GAC - den Global Assembly Cache (und Du installierst das auf den Kunden-Rechnern). Das erkennst Du entweder mit dem Programm GACView oder Du findest die DLLs unter den References im GAC-Tab.
Wolfgang
irgendwie scheint es da ein Problem mit dem Namen RKSV zu geben.
In den C#-DLLs wird der verwendet, und das scheint ein Problem mit der impliziten Namespaces zu geben.
Wenn ich den Namen der Klasse ändere, kompiliert es tadellos, ebenso wenn ich die Klasse RKSV in einen eigenen Namespace verpacke.
Ich habe aber trotzdem eine Lösung gefunden:
Wenn Du hier explizit einen Namespace angibst, kompiliert das Ding: Was die DLLs und das Verzeichnis angeht: auf Deinem Rechner ist das kein Problem, weil die XIDE die Assemblies ins Bin-Verzeichnis kopiert - kannst Du gerne nachprüfen.
Auf dem Kunden-Rechner musst Du das machen, außer der Hersteller wirft die Assemblies in den GAC - den Global Assembly Cache (und Du installierst das auf den Kunden-Rechnern). Das erkennst Du entweder mit dem Programm GACView oder Du findest die DLLs unter den References im GAC-Tab.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
RKSV Lib
Dann bin ich froh, dass es nicht mein Fehler ist
Danke für deine Hilfe und Geduld, die Libs sind erstmal durch. Bei Gelegenheit fange ich dann mit dem ersten Kassenprogramm an, ist Code von mir, sollte daher kein Problem sein, aber vorher muss ich mich noch unters Messer legen! :S
Danke für deine Hilfe und Geduld, die Libs sind erstmal durch. Bei Gelegenheit fange ich dann mit dem ersten Kassenprogramm an, ist Code von mir, sollte daher kein Problem sein, aber vorher muss ich mich noch unters Messer legen! :S
RKSV Lib
Ich bin grad beim Test des ersten Programms mit der RKSV Lib, bekomme aber bereits beim ersten Aufruf kein korrektes Ergebnis aus den Dlls von ITG Consulting zurück.
-> Bei meiner Lib _RKSV 1.76 habe ich RKSVComComplete.dll und ITGRKSVCom.dll eingebunden
-> Meine Lib _RKSV 1.76 habe ich beim Hauptprogramm eingebunden
-> Dann rufe ich auf
Fehlt noch irgend etwas?
Wie kann ich herausfinden, woran es scheitert?
-> Bei meiner Lib _RKSV 1.76 habe ich RKSVComComplete.dll und ITGRKSVCom.dll eingebunden
-> Meine Lib _RKSV 1.76 habe ich beim Hauptprogramm eingebunden
-> Dann rufe ich auf
Code: Select all
USING RKSVComComplete
CLASS RKSVINT
PROTECT _oRKSVCom AS RKSVCom // Klasse aus RKSVComComplete von ITG
...
CONSTRUCTOR()
_oRKSVCom := RKSVCom{}
RETURN
...
METHOD GetReadersCount( ) AS INT PASCAL
LOCAL nRetValue AS INT
nRetValue := _oRKSVCom:GetReadersCount()
? _oRKSVCom // {(0x0000)0x012AB327} CLASS RKSVCOM
? _oRKSVCom:GetReadersCount() -1
RETURN (nRetValue)
Wie kann ich herausfinden, woran es scheitert?
RKSV Lib
Hallo Franz,
kann es sein, dass nicht alle benötigten DLLs im Verzeichnis der Applikation liegen?
Hast Du das im Debugger mal angeschaut?
Ist schon mal eine positive Tatsache, dass Du keinen Laufzeitfehler zurückbekommst.
Wolfgang
kann es sein, dass nicht alle benötigten DLLs im Verzeichnis der Applikation liegen?
Hast Du das im Debugger mal angeschaut?
Ist schon mal eine positive Tatsache, dass Du keinen Laufzeitfehler zurückbekommst.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
RKSV Lib
Hallo Wolfgang,
es scheint so zu sein!
Es gibt noch ein paar Dlls, die aus RKSVComComplete.dll und ITGRKSVCom.dll aufgerufen werden. Ich habe jetzt mal alle in den Ordner c:xide...debug kopiert und erhalte nun bei GetReadersCount() eine 1 zurück!
Gibt es eine Möglichkeit, dass man die Dlls im Programmordner von ITG Consulting unter c:Program Files... lassen kann?
es scheint so zu sein!
Es gibt noch ein paar Dlls, die aus RKSVComComplete.dll und ITGRKSVCom.dll aufgerufen werden. Ich habe jetzt mal alle in den Ordner c:xide...debug kopiert und erhalte nun bei GetReadersCount() eine 1 zurück!
Gibt es eine Möglichkeit, dass man die Dlls im Programmordner von ITG Consulting unter c:Program Files... lassen kann?
RKSV Lib
Hallo Franz,
wenn es .NET-DLLs sind, leider nicht - außer Du installierst sie im GAC. Dafür müssen sie aber signiert sein, und das muss der Hersteller machen.
Da musst Du aber probieren, welche Du im Programm-Verzeichnis haben musst.
Diese Wahl (entweder GAC mit Versionsangabe oder Programm-Verzeichnis) soll dazu führen, die "DLL-Hölle" zu entschärfen, und in den meisten Fällen funktioniert das auch.
Das ist aber eine Entscheidung von Microsoft und nicht vom X#-Team.
Wolfgang
wenn es .NET-DLLs sind, leider nicht - außer Du installierst sie im GAC. Dafür müssen sie aber signiert sein, und das muss der Hersteller machen.
Da musst Du aber probieren, welche Du im Programm-Verzeichnis haben musst.
Diese Wahl (entweder GAC mit Versionsangabe oder Programm-Verzeichnis) soll dazu führen, die "DLL-Hölle" zu entschärfen, und in den meisten Fällen funktioniert das auch.
Das ist aber eine Entscheidung von Microsoft und nicht vom X#-Team.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
RKSV Lib
Hallo Wolfgang,
das erste Kassenprogramm ist fast fertig bis auf ein gravierendes Problem in meiner RKSV Lib:
Wenn ich mit VO einen Base64 codierten String wieder decodiere, funktioniert dies.
Wenn ich es beim gleichen String mit X# mache, erhalte ich folgende Fehlermeldung:
Der Aufruf in meiner Lib funktioniert in 2 Stufen (gekürzt):
Der Übergabestring jwsCompact in VO und X# sollte identisch sein:
Hast du eine Idee woran es liegen könnte?
das erste Kassenprogramm ist fast fertig bis auf ein gravierendes Problem in meiner RKSV Lib:
Wenn ich mit VO einen Base64 codierten String wieder decodiere, funktioniert dies.
Wenn ich es beim gleichen String mit X# mache, erhalte ich folgende Fehlermeldung:
Code: Select all
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding
characters, or an illegal character among the padding characters.
Code: Select all
CLASS RKSV // Meine Methoden
PROTECT _oRKSVINT as RKSVINT
METHOD ConvertJWSCompactToText(cJws AS STRING) AS STRING PASCAL
// Wandelt einen JWS-String in normalen Text um
// -> Return: Umgewandelter JWS-String oder NULL_STRING
LOCAL cResult AS STRING // Umgewandelter JWS-String
LOCAL cAnswer AS STRING // Fehlertext
LOCAL lRet AS LOGIC
lRet := _oRKSVINT:ConvertJWSCompactToText(cJws, @cResult, @cAnswer)
RETURN cResult
CLASS RKSVINT // Interface zu ITG RKSVCom
PROTECT _oRKSVCom as RKSVCom
METHOD ConvertJWSCompactToText(;
jwsCompact AS STRING,;
text REF STRING,;
errorMessage REF STRING;
) AS LOGIC PASCAL
LOCAL lRetValue AS LOGIC
? jwsCompact
lRetValue := _oRKSVCom:ConvertJWSCompactToText(jwsCompact, @text, @errorMessage)
? text, errorMessage // empty text, obige Fehlermeldung
RETURN (lRetValue)
Code: Select all
X#
eyJhbGciOiJFUzI1NiJ9.X1IxLUFUMl8wMV8yMDAwMDAwMV8yMDIwLTAyLTE1VDA5OjI4OjM0XzAsM
DBfMCwwMF8wLDAwXzAsMDBfMCwwMF9ja3ZuWUVDRjM2QT1fMDFFRDNBODFBMTRBNEM3MjcwMjNDMkIwN
TZfazQyNHlmZ3NqTFU9.YwubNZa1MEbU45lXW_HGW4sxF3lYu9hIz4e4T6jhlWdE5ZK45tMx8zTIZnJ6
YDApQ1RllhByZm3QwymdYKAITQ
Vo
eyJhbGciOiJFUzI1NiJ9.X1IxLUFUMl8wMV8yMDAwMDAwMV8yMDIwLTAyLTE1VDA5OjI4OjM0XzAsM
DBfMCwwMF8wLDAwXzAsMDBfMCwwMF9ja3ZuWUVDRjM2QT1fMDFFRDNBODFBMTRBNEM3MjcwMjNDMkIwN
TZfazQyNHlmZ3NqTFU9.YwubNZa1MEbU45lXW_HGW4sxF3lYu9hIz4e4T6jhlWdE5ZK45tMx8zTIZnJ6
YDApQ1RllhByZm3QwymdYKAITQ