RKSV Lib

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

User avatar
wriedmann
Posts: 3668
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

RKSV Lib

Post by wriedmann »

Hallo Franz,

diese beiden Strings sind identisch.
Der Unterschied wird sein, dass der String in X# möglicherweise als Unicode übergeben wird, die DLL sich aber Ansi erwartet.
Wie schaut die Methode ConvertJWSCompactToText() aus?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 422
Joined: Thu Jan 18, 2018 9:03 am

RKSV Lib

Post by lagraf »

Hallo Wolfgang,
es sind beide Methoden
RKSV:ConvertJWSCompactToText und
RKSVINT:ConvertJWSCompactToText in meinem Codeschnippsel vorhanden!
Franz
User avatar
wriedmann
Posts: 3668
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

RKSV Lib

Post by wriedmann »

Hallo Franz,
sorry, ich habe mich auf die beiden Aufrufe

Code: Select all

_oRKSVINT:ConvertJWSCompactToText(cJws, @cResult, @cAnswer)

Code: Select all

_oRKSVCom:ConvertJWSCompactToText(jwsCompact, @text, @errorMessage)
bezogen.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 422
Joined: Thu Jan 18, 2018 9:03 am

RKSV Lib

Post by lagraf »

Hallo Wolfgang,
ich verstehe nicht, was du brauchst mit deiner Frage "Wie schaut die Methode ConvertJWSCompactToText() aus?"
LG Franz
User avatar
wriedmann
Posts: 3668
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

RKSV Lib

Post by wriedmann »

Hallo Franz,
sorry, war dieses Wochenende krank im Bett.
Ich habe mich auf diesen Aufruf bezogen (ich nehme an, das ist X#):
rksvint.png
rksvint.png (19.98 KiB) Viewed 247 times
Ich denke, das sollte kein String sein, sondern ein byte[], also ein Array aus Bytes.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
lagraf
Posts: 422
Joined: Thu Jan 18, 2018 9:03 am

RKSV Lib

Post by lagraf »

Hallo Wolfgang,
ich hoffe es geht dir wieder besser!

Laut ILSpy ist es ein String, _oRKSVCom ist C# aus der ITG DLL.
LG Franz
Attachments
rksvcom.jpg
rksvcom.jpg (17.23 KiB) Viewed 247 times
User avatar
wriedmann
Posts: 3668
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

RKSV Lib

Post by wriedmann »

Hallo Franz,
das ist komisch, da kann ich mir keinen Reim drauf machen.
Base64 hat einen begrenzten Zeichensatz, und sollte eigentlich immun gegen Zeichensatz-Konvertierungen sein.
Kann es sein, dass es bereits vorher zu einer Verfälschung der Daten kommt?
Bekommst Du das in ein reproduzierbares kleines Beispiel rein?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Karl-Heinz
Posts: 774
Joined: Wed May 17, 2017 8:50 am
Location: Germany

RKSV Lib

Post by Karl-Heinz »

Laut ILSpy ist es ein String, _oRKSVCom ist C# aus der ITG DLL.
LG Franz
Hallo Franz,

Ich habe keine Lösung, aber poste mal den code der besagten ConvertJWSCompactToText() Methode. Der code der c# Methode sollte angezeigt werden wenn Du im ILSpy auf "ConvertJWSCompactToText" klickst. Evtl. fällt dem einen oder anderen dann dazu etwas ein.

Gruß
Karl-Heinz
lagraf
Posts: 422
Joined: Thu Jan 18, 2018 9:03 am

RKSV Lib

Post by lagraf »

Hallo Wolfgang,
der C# Code der Methode

Code: Select all

// RKSVComComplete.RKSVCOM
public bool ConvertJWSCompactToText(string jwsCompact, ref string text, ref string errorMessage)
{
	bool result;
	try
	{
		string[] array = jwsCompact.Split(new string[]
		{
			"."
		}, StringSplitOptions.None);
		string @string = Encoding.UTF8.GetString(RKSVLight.Base64UrlDecode(array[1]));
		string str = Convert.ToBase64String(RKSVLight.Base64UrlDecode(array[2]));
		text = @string + "_" + str;
		result = true;
	}
	catch (Exception ex)
	{
		errorMessage = ex.Message;
		result = false;
	}
	return result;
}
Ich zeige mir den jwsCompact direkt vor dem Aufruf an, sieht genau so aus wie in VO, hast du ja auch in meinem Posting gesehen:

Code: Select all

? jwsCompact
lRetValue := _oRKSVCom:ConvertJWSCompactToText(jwsCompact, @text, @errorMessage)
? text, errorMessage
Der jwsCompact kann auch nicht falsch sein, denn wenn ich ihn mit VO über OLE decodiere, funktionierts.
lagraf
Posts: 422
Joined: Thu Jan 18, 2018 9:03 am

RKSV Lib

Post by lagraf »

Hallo Wolfgang,
ich habs gefunden!

Wenn der jwsCompact String erstellt und in die MySQL DB gespeichert wird, kommt aus irgendeinem Grund ein chr(0) am Ende dazu. Wird der String dann eingelesen und decodiert, stört dieses chr(0) die C# Routine und es erfolgt die Fehlermeldung!

Wenn ich den gleichen String in VO über OLE an die C# Routine übergebe, dann funktioniert es! Anscheinend gibt es hier einen Unterschied bei der Übergabe über OLE und als String Parameter!
Post Reply