| |

VB.NET - FortgeschritteneString Problem bei Com-Interop | |  | Autor: Wicked-One | Datum: 18.11.03 12:15 |
| Hi,
Ich durchwühle seit Freitag die Hilfe, Fachliteratur und alles was das Inet hergibt, langsam zweifel ich an mir und ich hoffe Ihr könnt mir helfen
Das Problem ist folgendes: Ich soll eine Com Dll erstellen mit der man auf SAP zugreifen kann.
Los gehts mit dem SAP .NET Connector (VS.NET Plugin von SAP welches C# dlls erzeugt mit denen man man auf Bapis (SAP Befehle/Abfragen) zugreifen kann).
In einem VB.NET Klassenbibliothek-Projekt verweise ich nun auf die beiden C# Dlls.
Die Klasse in diesem Projekt hat das Comklassen Attribut und wird auch entsprechend kompiliert und registriert.
Wenn ich jetzt aber in VB6 darauf zurückgreife gibt mir eine Funktion in einer der C# dlls die Fehlermeldung "Das Argument 'Prompt' kann nicht in den Typ 'String' konvertiert werden.".
Wenn ich anstatt eine Com Dll zu erzeugen die beiden C# Dlls in ein VB.NET WindowsForms Projekt einbinde und dort die Klasse, abgesehen von dem Comclass Attribut, exact übernehme funktioniert alles einwandfrei.
Diverse String Konvertierungen in VB.NET und C# und auch das MarshalAs Attribut habe ich bereits versucht. Das Problem dass der String vll. als Nullterminierter String vorliegt und ein nicht Nullterminierter String erwartet wird würde ich an sich ausschliessen, da ich auch ausprobiert habe, den Parameterstring garnicht zu übergeben, sondern direkt in der C# Dll fest einzutragen. Das Ergebnis war das gleiche. Falls das trotzdem die Fehlerquelle sein sollte, wie kann ich das überprüfen? Theoretisch müsste doch StringVariable.EndsWith(Chr(0)) das ganze erkennen oder? (Damit habe ich den String überprüft und nichts gefunden.)
Meiner Meinung nach wird also in der Klasse anders mit Strings umgegangen wenn die Klasse in VB6 genutzt wird, als wenn sie in VS.NET genutzt wird. Die Fehlermeldung erscheint allerdings auch innerhalb von .NET wenn ein falscher String übergeben wird. Z.B. wird der Bapi auf den zurückgegriffen wird innerhalb der C# Dll auch als String übergeben. Ändere ich von diesem String nur ein Zeichen in Uppercase so kommt die gleiche Meldung. Die Frage ist jetzt warum ein fest eingetragener String akzeptiert wird wenn ich das ganze in .NET aufrufe, und nicht aktzeptiert, wenn ich das ganze von VB6 aufrufe. VB6 hat wenn ich den String fest eintrage ja egtl. garnichts damit zu tun. Es ruft nur die Methode meiner VB.NET Klasse auf, welche dann die Funktion der C# Dll aufruft. Die .Net Com Dll braucht ja schliesslich das Framework um nutzbar zu sein, sollte also was die Datentypen angeht von der aufrufenden Sprache unabhängig sein. Da aber ein veränderter String auch in VB.NET die Fehlermeldung auslöst scheint ja der fest eingetragene String je nach aufrufender Umgebung (VB 6/.Net) anders zu sein.
Vll. sehe ich ja auch nur den Wald vor lauter Bäumen nicht, aber irgendwie komme ich nicht weiter. Bin für jede Antwort dankbar
Falls jemand Codeausschnitte sehen will kann ich die nachreichen. Ich hab nur jetzt schon genug konfuses Zeug geschrieben, da wollte ich nicht noch zig Zeilen Code dranhängen ;)
Danke schonmal im Vorraus
Julian
-------
Wir, die guten Willens sind, gefuehrt von Ahnungslosen, versuchen fuer die
Undankbaren das Unmoegliche zu vollbringen.
Wir haben so viel mit so wenig so lange versucht, dass wir jetzt
qualifiziert sind, fast alles mit nichts zu bewerkstelligen |  |
 String Problem bei Com-Interop | 1.310 | Wicked-One | 18.11.03 12:15 |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|