C# *.dll für VB6 Programm erstellen

Ich würde mich ja zugern an diesem Thema konstruktiv beteiligen, aber das letzte mal habe ich sowas wie hier im Affenhaus erlebt!

Insbesondere die Beschwerde von Dir CrimeTime, dass du dich falsch behandelt fühlst weil du mit einer neuen Sprache anfängst, ist doch total absurd, wo du die Sprache doch eigentlich gar nicht lernen willst, sondern nur jemanden suchst, der deine Probleme löst. Ich errinere an deinen Post, dass du VS2003 eh nach diesem Projekt von deinem PC entfernst und dann nie wieder anfasst.

Dieses Forum ist sicher dazu da Anfängern wie Fortgeschrittenen bei allgemeinen und speziellen Problemen zu helfen. Aber jede konstruktive Hilfe setzt auch Eigeninitiative vorraus. Diese kann ich bei dir nicht erkennen. Tut mir leid, aber wie soll man dir helfen wenn du nicht die Ratschläge befolgst?!

Überdenke Du Deine Verhaltensweise, vielleicht kommen wir dann ZIELFÜHREND zu einer Lösung!
 
Ich befolge doch die Ratschläge, aber wenn der Code den er gepostet hat doch nicht Funktioniert, besteht in meinen Augen das Problem weiterhin.
 
Ich befolge doch die Ratschläge, aber wenn der Code den er gepostet hat doch nicht Funktioniert, besteht in meinen Augen das Problem weiterhin.
Du hast den Code ja gar nicht verwendet. Du hast ihn modifiziert und dann berichtet das es nicht geht.

Ich werde jetzt letztmalig den Code für dich so anpassen, das es unmissverständlich klar ist in welcher Reihenfolge die Anweisungen auszuführen sind. Du solltest dann den folgenden Code einfach kopieren und in dein Projekt einfügen, unmodifiziert!
Wenn das dann trotzdem nicht geht, dann schreibe die genaue Fehlermeldung und die Zeile mit Code in der der Fehler auftritt.
Visual Basic:
Dim obj as ClassLibrary1.HexRC4
Set obj = New ClassLibrary1.HexRC4

Dim I as Integer: I = obj.CalculateKeyHash("...")
obj.Initialize(I)

MsgBox obj.EncipherIt("wer das liest ist..")
Gruß

PS: Die 100-Beiträge-Schwelle ist gar nicht mehr so weit weg. Weiß jemand den Rekord, damit man sich mal etwas orientieren kann? ^^
 
Wow, während meiner gesamten Tutorials-Zeit habe ich noch keinen (von mir abonnierten) Thread erlebt, der dermaßen explodiert ist.
Wann schaffen wir die "100"?

Gruß
MCoder

P:S: Sorry für den nicht zielführenden Beitrag, aber das musste jetzt irgendwie raus :)
 
Also Funktionieren tut es, aber es kommt halt was falsches raus, auch wenn ich den Richtigen Wert eingebe.

Eine Frage habe ich aller Dings noch, warum musst dort
Code:
Dim I As Integer: I = obj.CalculateKeyHash("")
Das CalculateKeyHash hin?

Edit:/ Ich denke ich weiß warum dort dann das Falsche zurück gegeben wird, da ich wohl die Falsche Funktion nutze, ich müsste somit Encipher / Decipher nutzen aber sobald ich das Aufrufe gibts :
Invalid procedure call or argument

Hier der Code der Funktionen:

Visual Basic:
		public byte[] Encipher(byte[] Data)
		{
			byte[] Result = new byte[Data.Length * 2];

			for (int a = 0, b = 0; a < Data.Length; a++, b += 2)
			{
				byte k = MixTable();
				int c = Data[a] & 0xff ^ k;
				if (c > 0)
				{
					Result[b] = (byte)HEXALPHABET_CHARS[c >> 4 & 0xf];
					Result[b + 1] = (byte)HEXALPHABET_CHARS[c & 0xf];
				}
			}

			return Result;
		}
		public string EncipherIt(string sData)
		{
			StringBuilder sbResult = new StringBuilder(sData.Length * 2);
			for (int a = 0; a < sData.Length; a++)
			{
				byte k = MixTable();
				int c = sData[a] & 0xff ^ k;
				if (c > 0)
				{
					sbResult.Append(HEXALPHABET_CHARS[c >> 4 & 0xf]);
					sbResult.Append(HEXALPHABET_CHARS[c & 0xf]);
				}
				else
				{
					sbResult.Append("00");
				}
			}

			return sbResult.ToString();
		}

		public byte[] Decipher(byte[] Data, int Length)
		{
			if (Length % 2 != 0)
				throw new Exception("Invalid input data, input data is not hexadecimal.");

			byte[] Result = new byte[Length / 2];
			for (int a = 0, b = 0; a < Length; a += 2, b++)
			{
				byte c = ConvertTwoHexBytesToByte((byte)Data[a], (byte)Data[a + 1]);

				Result[b] = (byte)(c ^ MixTable());
			}

			return Result;
		}
		public string DecipherIt(string sData)
		{
			if (sData.Length % 2 != 0)
				throw new Exception("Invalid input data, input data is not hexadecimal.");

			StringBuilder sbResult = new StringBuilder(sData.Length);
			for (int a = 0, b = 0; a < sData.Length; a += 2, b++)
			{
				byte c = ConvertTwoHexBytesToByte((byte)sData[a], (byte)sData[a + 1]);

				sbResult.Append((char)(c ^ MixTable()));
			}

			return sbResult.ToString();
		}
 
Zuletzt bearbeitet:
Also Funktionieren tut es
Ist ja 'n Ding. Find ich jetzt irgendwie lustig. ^^
aber es kommt halt was falsches raus, auch wenn ich den Richtigen Wert eingebe.
Was ist der "richtige Wert" und was kommt raus, was soll deiner Meinung nach rauskommen?
Eine Frage habe ich aller Dings noch, warum musst dort
Code:
Dim I As Integer: I = obj.CalculateKeyHash("")
Das CalculateKeyHash hin?
Weil das derjenige der den Code für die HexRC4 Klasse geschrieben hat für notwendig hielt, da er es in dem Original-Konstruktor so gemacht hat.

Da dieser Konstruktor aber über COM nicht verwendbar ist, muss man das jetzt selbst machen.

Es ist jetzt allerdings so, das es (momentan) völlig unnötig ist, wenn man sich mal die Klasse näher anschaut. Es scheint so, das der Kollege der die Klasse geschrieben hat, noch nicht ganz fertig war...? (Es fehlt ja auch noch die Möglichkeit, das man ein(en) Schlüssel/Passwort angeben kann?)

Das bedeutet, man kann (momentan) den Aufruf von CalculateKeyHash() weglassen und einen beliebigen Integer an die Initialize() Methode übergeben, da der Parameter in der Methode gar nicht verwendet wird.

Wenn du mit VB.NET sowieso nichts am Hut hast, warum willst du dann eigentlich unbedingt diese Klasse verwenden? http://www.freevbcode.com/ShowCode.asp?ID=4398

Gruß

PS: Beitrag #86 und immer noch offen... ^^
 
Zuletzt bearbeitet:
Also herraus kommt :
Code:
Ürij

und meiner Meinung nach sollte etwas wie :
Code:
@q

oder so, jedenfalls was leserliches kommen.
 
Edit:/ Ich denke ich weiß warum dort dann das Falsche zurück gegeben wird, da ich wohl die Falsche Funktion nutze, ich müsste somit Encipher / Decipher nutzen aber sobald ich das Aufrufe gibts :
Invalid procedure call or argument

Hier der Code der Funktionen:
Wie oft willst du den denn noch posten? Der Code ist doch bekannt. Es geht um den Code den du geschrieben hast. Sollen wir den erraten?
Also herraus kommt :
Code:
Ürij

und meiner Meinung nach sollte etwas wie :
Code:
@q

oder so, jedenfalls was leserliches kommen.
Da müssen hexadezimale Zeichen herauskommen - sowas wie @q auf keinen Fall. Zeig deinen Code.

Gruß
 
Das ist der Code:

Visual Basic:
Private Sub Command3_Click()
Dim obj As ClassLibrary1.HexRC4
Set obj = New ClassLibrary1.HexRC4
Dim I As Integer: I = obj.CalculateKeyHash("")
obj.Initialize (I)
Text1.Text = obj.DecipherIt("B59235F70E")
End Sub
 
Das ist der Code:

Visual Basic:
Private Sub Command3_Click()
Dim obj As ClassLibrary1.HexRC4
Set obj = New ClassLibrary1.HexRC4
Dim I As Integer: I = obj.CalculateKeyHash("")
obj.Initialize (I)
Text1.Text = obj.DecipherIt("B59235F70E")
End Sub
Wo hast du denn den String "B59235F70E" her?

Bei mir kommt da "Ürij" raus. Was so fast das gleiche ist wie bei dir.

Gruß
 

Neue Beiträge

Zurück