Einige wenige Poster scheinen die Frage falsch verstanden zu haben, also werde ich versuchen, die Dinge klarzustellen, indem ich die Frage neu formuliere und die richtigen Antworten zusammenfasse.
Ich möchte Daten eines Typs in einen anderen Typ umwandeln. In meinem VB.NET Code würde ich
CType
dazu verwenden. Wenn ich versuche,CType
in VB6 zu verwenden, erhalte ich jedoch einen Fehler "Sub oder Funktion nicht definiert". Also, wie kann ich Umwandlungen in VB6 durchführen, wennCType
nicht funktioniert?
Wie Sie vielleicht bemerkt haben, hat VB6 keine CType
-Funktion wie VB.NET. Die anderen Konvertierungsfunktionen (diejenigen mit Namen, die mit C
beginnen), die Sie möglicherweise in VB.NET-Code gefunden haben, wie CInt und CStr, sind jedoch in VB6 vorhanden, und Sie können sie zum Konvertieren verwenden Nicht-Objekttypen. Es gibt keine integrierte Funktion zum Konvertieren eines Objekts einer Klasse in ein Objekt einer anderen Klasse. Beachten Sie, dass VB6 im Gegensatz zu VB.NET keine Vererbung unterstützt. Eine Klasse in VB6 kann eine oder mehrere Schnittstellen implementieren, sie kann jedoch nicht von einer anderen Klasse erben. Wenn die Klasse eines Objekts jedoch mehr als eine Schnittstelle implementiert, können Sie mit der Anweisung Set
ein Objekt auf eine der unterstützten Schnittstellen umwandeln (wie von Ant vorgeschlagen). Eine erweiterte Version des Codebeispiels von Ant wird im Folgenden bereitgestellt:
Beispiel: Darstellen einer Klasse auf eine der unterstützten Schnittstellen
Im Folgenden finden Sie eine vollständige Liste der integrierten Konvertierungsfunktionen in VB6, die direkt aus der VB6-Hilfedatei stammen.
CBool
Gibt
zurück
Boolean
Beschreibung
Konvertiere Ausdruck in Boolean.
Bereich für Ausdruck Argument:
Jeder gültige String oder numerische Ausdruck.
CByte
Gibt
zurück
Byte
Beschreibung
Konvertieren Sie Ausdruck in Byte.
Bereich für Ausdruck Argument:
0 bis 255
CCur
Gibt
zurück
Currency
Beschreibung
Konvertieren Sie Ausdruck in Währung.
Bereich für Ausdruck Argument:
-922,337,203,685,477,5808 bis 922,337,203,685,477,5807.
CDate
Gibt
zurück
Date
Beschreibung
Konvertieren Sie Ausdruck nach Datum.
Bereich für Ausdruck Argument:
Jeder gültige Datumsausdruck.
CDbl
Gibt
zurück
Double
Beschreibung
Wandeln Sie Ausdruck in Double um.
Bereich für Ausdruck Argument:
-1.79769313486232E308 zu -4.94065645841247E-324 für negative Werte; 4.94065645841247E-324 bis 1.79769313486232E308 für positive Werte.
CDec
Gibt
zurück
Decimal
Beschreibung
Konvertiere Ausdruck in Dezimal.
Bereich für Ausdruck Argument:
+/- 79,228,162,514,264,337,593,543,950,335 für nullskalierte Zahlen, dh Zahlen ohne Nachkommastellen. Für Zahlen mit 28 Dezimalstellen ist der Bereich +/- 7.9228162514264337593543950335. Die kleinste mögliche Zahl ungleich Null ist 0,00000000000000000000000000000001.
CInt
Gibt
zurück
Integer
Beschreibung
Konvertieren Sie Ausdruck in Long.
Bereich für Ausdruck Argument:
-32.768 bis 32.767; Brüche sind gerundet.
CLng
Gibt
zurück
Long
Beschreibung
Konvertieren Sie Ausdruck in Long.
Bereich für Ausdruck Argument:
-2,147,483,648 bis 2,147,483,647; Brüche sind gerundet.
CSng
Gibt
zurück
Single
Beschreibung
Konvertieren Sie Ausdruck in Single.
Bereich für Ausdruck Argument:
-3.402823E38 bis -1.401298E-45 für negative Werte; 1.401298E-45 bis 3.402823E38 für positive Werte.
CStr
Gibt
zurück
String
Beschreibung
Konvertieren Sie Ausdruck in String.
Bereich für Ausdruck Argument:
Rückgabewerte für CStr hängen vom Ausdruckargument ab.
CVar
Gibt
zurück
Variant
Beschreibung
Konvertieren Sie Ausdruck in Variant.
Bereich für Ausdruck Argument:
Gleicher Bereich wie Double für Numerik. Derselbe Bereich wie String für Nicht-Numerik.
Nehmen wir an, Sie haben ein Objekt von ChildClass (untergeordnet), das Sie in BaseClass umwandeln möchten. Sie tun dies:
%Vor%Aufgrund der Art und Weise, wie VB6 die Art der Sicherheit beim Kompilieren behandelt, können Sie das ohne zusätzliche Syntax tun.
Hinweis: Angesichts der Tatsache, dass alle anderen CType
erwähnt haben, habe ich die Frage vielleicht komplett missverstanden, und ich entschuldige mich, wenn das der Fall ist!
Die bereits erwähnten Umwandlungen sind korrekt, aber wenn der Typ ein Objekt ist, dann müssen Sie "Set" in VB6 verwenden, wie zum Beispiel:
%Vor%Das hängt natürlich von dem Typ ab, auf den Sie zugreifen. Fast alle Benutzerklassen sind Objekte sowie Collection, Dictionary und viele andere. Die eingebauten Typen wie long, integer, boolean usw. sind offensichtlich keine Objekte.
Ctype () Ich glaube. Die C * (CDate (), CStr () usw.) sind zum größten Teil Überbleibsel.