2011-01-03 3 views
1

Ich habe ein. Net-Objekt mit einer Methode und einer Schnittstelle. Die Schnittstelle erwartet, dass einer der Parameter vom Typ long ist.
Das Problem ist, dass Long von vb6 nicht Long by .net ist. Es ist nicht die gleiche Länge, daher kann mein vb6-Programm mein .net-Objekt jetzt nicht aufrufen. Ich kann die Schnittstelle in .net nicht unterbrechen, um diese Änderung an int vorzunehmen, da alle Clients, die es verwenden, darunter leiden werden.VB6 zu .Net-Schnittstelle - was ist der VB6-Datentyp für eine lange?

Irgendwelche kreativen Ideen?

TY

Antwort

2

Es gibt keine direkte Entsprechung. Ihr Dilemma wird diskutiert und Lösungen hier gegeben:

http://www.thescarms.com/vbasic/vb6vsvbnet.aspx

Die meisten APIs, die numerische Argumente 32-Bit-Werte erwarten. In VB6 ist das ein Long-Datentyp. In VB.NET ist eine lange 64-Bit und wird nicht mit 32-Bit API-Aufrufe arbeiten. Ihre .NET-API-Parameter müssen vor dem Aufruf der API in den Datentyp Integer geändert oder umgewandelt werden.

Viele APIs sind nicht mehr aufrufbar von VB und andere werden Ersatz haben. Einige, die die Zeichenfolgen übergeben, müssen optimiert werden, um den korrekten String oder Nullwert zu übergeben. Überprüfen Sie die VB.NET Hilfe für weitere Informationen.

APIs müssen auf einem Fall von Fall zu Fall behandelt werden. Ihre beste Wette ist Isolieren Sie alle Ihre API-Aufrufe, so Änderungen müssen nur in einem einzigen Speicherort in Ihrem Code vorgenommen werden. Das Upgrade-Tool versucht, API-Aufrufe zu konvertieren, indem Wrapper für sie erstellt werden. Der manuelle Eingriff wird jedoch erforderlich sein.

2

Ohne weitere Details, ist die kurze Antwort, dass Sie das .NET-Objekt in einer anderen wickeln, die einen Parameter annimmt, dass Sie kann Pass von VB6, und wandelt sie dann in long benötigt als beim Aufruf die Methode für das vorhandene Objekt.

Nur das fragliche Programm muss die Wrapper/neue Schnittstelle verwenden; Die bestehende Schnittstelle bleibt für alle anderen Systeme erhalten.

+0

+1. Das ist gut. Das sollte gut funktionieren. – David

Verwandte Themen