===== Funktionen print_r(), print_rm(), d(), c() ===== ==== Definitionen ==== Public Function print_r( _ ByRef iExpression As Variant, _ Optional ByVal iParams As enuPrintRParams = prParamsDefault, _ Optional ByVal iReturn As enuPrintROutputMethode = prConsole _ ) As String === Parameter-Liste === Diverse Parameter zur Formatierung der Ausgabe. ***iExpression** Variable die analysiert werden soll ***//iParams//** Diverse Parameter zur Formatierung der Ausgabe. Die verschiedenen Parameter lassen sich kombinieren. Es gibt Parameters, die in Kombination keinen Sinn machen. zB: prStringSingleQuotes+prStringDoubleQuotes. In diesem Fall wird der kleinere Wert genommen. Also nur prStringSingleQuotes. Für die genaue Funktion der Parameter, siehe Kommentar beim Enum enuPrintRParams Wenn man vom Standart einfach etwas weghabenwill, dann kann man das auch als Negativ-Parameter mitgeben ***//iReturn//** (Optional) Art der Rückgabe: Standart ist das Direktfenster. Alternativ kann man auch als Rückgabewert der Funktion oder in den Zwieschnepseicher des PCs schreiben. Grad letzteres ist bei gösseren Verschachtelungen Empfehlenswert, da das Direktfenser eine Beschränkte Anzahl Zeilen hat. Die Auswahlen lassen sich auch kombinieren: prConsole+prClipboard. === Enumerator === == enuPrintRParams == ***prNoParams** Kein Parameter hat Gültigkeit ***prShowType** Zeigt den Datentype am Anfangan in <> an ***prStringSingleQuotes** Setzt Strings in einfache Anführungszeichen. Hat vor prStringDoubleQuotes vorrang. ***prStringDoubleQuotes** Setzt Strings in doppetle Anführungszeichen ***prEscapeDoubleQuotes** Setzt wandelt " innerhalb eines Textes zu "". Somit ist der String direkt weiterverwendbar ***prEscapeSpaces** Tab, Cr, Lf als /t, /r, /n zurückgeben ***prEscapeNotPrintablaChars** Nicht Druckbare Zeichen als Unicode ausgeben ***prParamsDefault** = prShowType + prStringSingleQuotes + prEscapeSpaces + prEscapeNotPrintablaChars == enuPrintROutputMethode == Auswahl was mir der Analyse geschehen soll. Die Werte lassen sich mit + kombinieren ***prConsole**(1) Die Ausgabe wird ins Direktfenster geschrieben ***prReturn**(2) Die Ausgabe wird als Funktionsrückgabewert zurückgegeben ***prClipboard**(4) Die Ausgabe wird in den Zwieschenspeicher geschrieben ***prMsgBox**(8) Die Ausgabe wird als Popup ausgegeben === Rückgabewerte === Falls ein array übergeben wurde, werden die Werte in einem Format angezeigt, das sowohl die Schlüssel als auch die Elemente darstellt. Für Variablen vom Typ Collection und Dictionary gilt das Gleiche. Für die restlichen Objekte wird nur der Klassenname angezeigt. \\ Für alle einfachen Variablen wird der Type und der Inhalt angezeigt ===== print_rm() ===== Ruft print_r mit dem Parameter prConsole für eine ganze Liste von Variablen auf ==== Definitionen ==== Public Sub print_rm(ParamArray iExpressions() As Variant) === Parameter-Liste === ***iExpressions** Liste der Variablen die analysiert werden soll ===== d() ===== d() ist ein Alais zu print_r() und steht für [D]ebug ==== Definition ==== Beschreibung der Komponenten, siehe print_r() Public Function d( _ ByRef iExpression As Variant, _ Optional ByVal iParams As enuPrintRParams = prParamsDefault, _ Optional ByVal iReturn As enuPrintROutputMethode = prConsole _ ) As String ===== c() ===== Wie print_r mit den den Parametern prEscapeDoubleQuotes + prStringDoubleQuotes, sowieprReturn + prConsole \ c steht für [C]ode \\ Eignet sich, wenn man das Resultat später weiterverwenden will ==== Definition ==== '/** ' * Wie print_r mit den den Parametern prEscapeDoubleQuotes + prStringDoubleQuotes, sowieprReturn + prConsole ' * c für [C]ode ' * Eignet sich, wenn man das Resultat später weiterverwenden will ' * @example: c "a" & chr(34) & "b" -> "a""b" ' * @param Variant Zu prüfende Variable ' * @return Variant Nichts oder die Analyse als String Public Function c(ByRef iExpression As Variant) As String ===== Ausgewertete Variablen/Obejekte ===== Im Moment kann die Funktion die folgenden Objekte/Variablen auswerten *Native Variablen: Strings, Datum, Integer, Long, Double, Decimal, Null, Empty *Eindimensionale Array (auch Verschachtelte). Also keine myArray(1, 2) *Collection *Dictionaries *ErrObject *Objekte aus Klassenmodulen (beschränkt auf Public Property Get) *RegExp (Referenz auf 'Microsoft VBScript Regular Expressions 5.5' notwendig) *Mehrdimensionale Arrays (bis zu 4 Dimensionen. Kann beliebig erweitert werden) *Dao.Recordset (Anzahl Einträge sind begrenzt) *TempVars (Nur bei Access) *Properties (Nur bei Access) Bei allen restlichen Objekten wird nur der Klassenname angegeben ===== Conditional Compilation ===== Um den verschiedenen Variable/Objekttypen in den verschiedenen VBAs gerecht zu werden, habe ich eine Conditional Compilation eingeführt. ganz am Anfang definiert man, welches Office-Paket es ist. #Const isAccess = True #Const isExcel = False 'Excel unterstützt keine TempVars und Properties #Const isWord = False 'Muss noch überprüft werden, welche Dinge unter Word nicht funktionieren ===== Offene Auswertungen ===== Die Folgenden will ich demnächst mal noch implementieren. *Excel.Range *User Defined Type UDT (noch keine Ahnung wie ich die hinkriegen soll)