This is an old revision of the document!
Erweiterter CStr()
Inteligentere Umsetzung des VBA-Befehls CStr. Die Funktion erkennt auch Objekte mit dem Interface IFormattable. Zudem sind diverse weitere Objekte/Typen abgedeckt.
Im Code gibt es 2 Einstellungen, die die Möglchkeiten steuern. Da ich diese Funktion für mich geschrieben habe, habe ich auch einige Methoden und Objekte, die sin in meiner Library befinden zur Verfügung. Diese sind aber nicht zwingend. Mit den folgenden Einstellungen kann angegeben werden, ob die Module verfügbar sind.
Angabe, ob das Modul lib_json in diesem Projekt vorhanden ist oder nicht
#Const lib_json_exists = True
Das Interface IFormattable ist in diesem Projekt vorhanden
#Const IFormattable_exists = True
Public Function cStrF( _ ByRef iValue As Variant, _ Optional ByVal iparams As csfParams = csfListAsJson + csfNullAsEmpty, _ Optional ByVal iDelemiter As String = ", " _ ) As String
* iValue Item das zu einem String geparst werden soll * iparams Paramter um das Verhalten von CStrF zu steuern * iDelemiter String
csfParams
Public Enum csfParams csfNon = 0 'Kein Parameter aktiv csfListAsJson = 2 ^ 0 'Falls die Library lib_json die Listen (Array, Dictionary etc) als Json-String zurückgeben. Ansonsten als Werteliste mit Komma getrennt csfRegExpOnlyPattern = 2 ^ 1 'Bei einem Regexp nur den Pattern zurückgeben csfNullAsEmpty = 2 ^ 2 'Null und Nothing als Empty zurückgeben csfIsSubItem = 2 ^ 9 'Wird nur Intern benutzt End Enum
Hier einige Anwendungsbeispiele
Für die Ausgabe der Resultate verwendete ich die Funktion [VBA] print_r().
? cStrF(DateTime())
#2016-06-23 11:35:33#
? cStrF(array(1,2,3))
[1,2,3]
? cStrF(array(1,2,3), csfNon, "#")
1#2#3
? cStrF(array(1,2,array(1,22,33)))
[1,2,[1,22,33]]
? cStrF(array(1,2,array(1,22,33)), csfNon)
1, 2, (1, 22, 33)
print_r cStrF(Null) <String> '' print_r cStrF(Nothing) <String> ''
Unable to display file "/vba/cast/cstrf.bas": It may not exist, or permission may be denied.