Groß, VB-6 text-box

Zu machen, wie die ersten Buchstaben in Großbuchstaben, beim drücken von tab oder Raum in vb 6.0 ?

Mein code ist wie folgt

txtFirstName.Text = UCase$(txtFirstName.Text)

aber es ändert sich nicht nach tab-oder space -

  • Was ist der nutzen der $ Zeichen?
  • es ist old-school-VB6-syntax. VB6 nicht über eine native bedeutet, dass ändern, nur den ersten Buchstaben. Auch wir haben keine Ahnung, wo der code sich befindet oder wie (oder ob überhaupt) er aufgerufen wird.
  • Es ist nicht wirklich old-school-syntax. String-Funktionen in VB6 paarweise vorhanden sind - akzeptiert und zurück Variants, der andere akzeptiert und zurück Strings. Die stark typisierten diejenigen, die am Ende mit $. Beide sind nützlich in verschiedenen zusammenhängen, so, wenn Sie eine string-variable mit zu beginnen, es besser zu nutzen UCase$ als UCase.
  • RTrim$, UCase$ etc sind eigentlich sehr alte Schule stammt aus ROM-Basic. Die nicht-Typ-Bezeichner Anzahl (UCase) sind relative Neulinge (VB5 oder 6). Aber beide Versionen nehmen und die Rückgabe von strings. Vielleicht mit vba oder etwas anderes verwendet Variante, aber nicht VB6. Aus dem Objektkatalog (beide defs): Function UCase(String) ...Returns the specified string, converted to uppercase
  • String hier ist der name des Parameters, nicht der Typ. Wenn der Typ Variant der Objekt-Browser lässt es komplett. Vergleichen Sie mit UCase$(String As String). Beachten Sie auch, gibt es kein zurück mehr geben für UCase(String) wieder das bedeutet, dass der return-Typ wird ausgelassen, da es Variant. Der andere ist UCase$(String As String) As String. Dasselbe geschieht in VBA. Aber Sie haben Recht, dass das dollar-Zeichen selbst stammt von vor sehr langer Zeit.
  • Der MSDN-Eintrag für VBA das UCase ist anders als VB6 SP3-Objekt-Browser-Eintrag (Returns the specified string...). Ob Sie die Funktionen UCase oder UCase$ VB6 ermöglicht ein Date, String, Variant oder integer übergeben werden. Die Rendite für beide ist in der Regel ein string (VarType vbString). Aber wenn du die return-variable (`%s = UCase$()) VB6 würde eine Typ-Konvertierung (im Gegensatz zu Option Infer..., die wild gegangen). Aufgrund der schwachen Typisierung, es war immer ungesehen conversions über. Gibt es vielleicht einen Weg zu zwingen, eine Variante Rückgabe/Aufgabe, aber es ist in der Regel vbString.
  • Returns the specified string wirklich bedeutet", Gibt die angegebene Zeichenfolge in ein Variant/String". Die Wortwahl ist einfach, um nicht zu verwirren diese VB-Benutzer, die nicht wollen, um zu wissen, details. Ja, VB6 ist alles über implizite Konvertierungen, und man kann fast nichts, aber bevor das argument erreicht die Funktion konvertiert einen string oder eine Variante. Dasselbe mit der return-Typ, können Sie eine Variante, um eine Zeichenfolge jederzeit, so können Sie dies mit der das Ergebnis der Funktion zu. Das aber ändert nichts an der Tatsache, dass man zurückkehrt, ein String und das andere ein Variant/String.
  • In der Tat, der einfachste Weg ist, um die VB6-Bibliothek Typ: [entry(30), helpcontext(000F6EAB)] BSTR _stdcall _B_str_UCase([in] BSTR String); [entry(31), helpcontext(000F659B)] VARIANT _stdcall _B_var_UCase([in] VARIANT* String);.
  • Ja, die Umsetzung im Detail anders. Aber im Direktfenster ? vartype(UCase(42)) oder ? vartype(UCase("foo")) oder sogar ein date-literal-druckt 8, der angibt, vbString zurückgegeben, bevor eine Abtretung kann die Umwandlung geschehen. Sie sind nicht die gleiche Funktion, aber Sie sind funktionell gleich und austauschbar (passiert sogar eine Variante, es kommt wieder als String). Es sieht aus wie Sie versuchen, verwenden Sie die neue Variante anstelle von was auch immer Typ-Konvertierungen erforderlich waren, mit der alten Methode. Es macht kaum mit einer solchen Reliquie. Sorry an den OP für den hijack!
  • VarType ist eine normale Funktion, nicht eine Sprache konstruieren, und es wird erklärt, akzeptiert einen parameter vom Typ VARIANT*, so hat der compiler die zu packen, die wahre String zurückgegeben UCase$ in eine Variant/String vor der übergabe an VarType, die macht VarType(UCase("a")) erscheinen genau die gleiche wie VarType(UCase$("a")). Ja, Sie sind absolut austauschbar, aber der Unterschied kann wichtig werden für große Zeichenfolgen, da diese Variante-string-Konvertierung erstellt Kopien.

Schreibe einen Kommentar