xsharp.eu • RKSV Lib - Page 6
Page 6 of 7

RKSV Lib

Posted: Sat Feb 15, 2020 10:30 am
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

RKSV Lib

Posted: Sat Feb 15, 2020 11:10 am
by lagraf
Hallo Wolfgang,
es sind beide Methoden
RKSV:ConvertJWSCompactToText und
RKSVINT:ConvertJWSCompactToText in meinem Codeschnippsel vorhanden!
Franz

RKSV Lib

Posted: Sat Feb 15, 2020 5:22 pm
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

RKSV Lib

Posted: Sun Feb 16, 2020 6:59 am
by lagraf
Hallo Wolfgang,
ich verstehe nicht, was du brauchst mit deiner Frage "Wie schaut die Methode ConvertJWSCompactToText() aus?"
LG Franz

RKSV Lib

Posted: Mon Feb 17, 2020 5:08 am
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 423 times
Ich denke, das sollte kein String sein, sondern ein byte[], also ein Array aus Bytes.
Wolfgang

RKSV Lib

Posted: Mon Feb 17, 2020 6:53 am
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

RKSV Lib

Posted: Mon Feb 17, 2020 8:06 am
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

RKSV Lib

Posted: Mon Feb 17, 2020 8:41 am
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

RKSV Lib

Posted: Mon Feb 17, 2020 8:58 am
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.

RKSV Lib

Posted: Mon Feb 17, 2020 11:09 am
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!