User Tools

Site Tools


vba:functions:print_r:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:functions:print_r:index [14.09.2017 11:02:58]
yaslaw
vba:functions:print_r:index [23.05.2022 09:23:05] (current)
yaslaw
Line 1: Line 1:
 <​const>​ <​const>​
-    version=2.10.0 +    version=2.17.1 
-    vdate=12.09.2017+    vdate=19.02.2020
     fname=lib_printr.bas     fname=lib_printr.bas
     ns=%NAMESPACE%     ns=%NAMESPACE%
Line 16: Line 16:
 <WRAP center round download>​ <WRAP center round download>​
 {{..%%fname%%|Download %%fname%% (V-%%version%%)}} {{..%%fname%%|Download %%fname%% (V-%%version%%)}}
 +\\ {{..lib_printR_excel.bas|Download lib_printR_excel.bas (V-%%version%%)}}
 </​WRAP>​ </​WRAP>​
  
Line 43: Line 44:
   * ''​d()'' ​ Ein Alias zu print_r() mit denselben Paramtern. Ist praktisch im Debugfenster,​ da er so kurz ist   * ''​d()'' ​ Ein Alias zu print_r() mit denselben Paramtern. Ist praktisch im Debugfenster,​ da er so kurz ist
   * ''​c()'' ​ Gibt das Resultat in einer Form zurück, die gleich wieder für weitere Zwecke verwendet werden kann   * ''​c()'' ​ Gibt das Resultat in einer Form zurück, die gleich wieder für weitere Zwecke verwendet werden kann
 +  * ''​print_l'' ​ Wendet bei meinen bekannten ListenObjekten den Print_r nur auf die Liste an, nicht auf das ganze Objekt
   * ''​print_rm()'' ​ Wendet print_r() auf mehrere Elemente an   * ''​print_rm()'' ​ Wendet print_r() auf mehrere Elemente an
 +  * ''​dRx()''​ Spezialfall zum vereinfachten Testen von RegEx Patterns
 +  * ''​analyze()''​ Alias um ohne Paramter einen Rückgabewert zu erstellen. Praktisch in Abfragen
  
 ===== Anwendungsbeispiele ===== ===== Anwendungsbeispiele =====
Line 69: Line 73:
 </​code>​ </​code>​
  
-==== Vergleich zwischen debug.print,​ d()und c() ====+==== Vergleich zwischen debug.print,​ d()c() und print_l ​====
 <code vb>'​Text mit leerzeichen am Schluss. Das ist bei debug.print nichterkennbar <code vb>'​Text mit leerzeichen am Schluss. Das ist bei debug.print nichterkennbar
 ? "Hallo Welt   "​ ? "Hallo Welt   "​
Line 131: Line 135:
 ) )
 </​code>​ </​code>​
 +
 +=== print_l() ===
 +print_l wird vorerst nur für die folgenden Klassen unterstätzt. Ansonsten funktioniert er wie d().
 +Und da uch nur, wenn diese Objekt direkt übergeben wird. In einer Verschachtelung nicht mehr
 +[[vba:​classes:​iterator:​index|]] & [[vba:​classes:​liststream|]]
 +<code vb>'​Objekt initalisieren
 +Set it = Iterator.instance(array(1,​2))
 +
 +'​Herkömlich mit d()
 +d it
 +<Class Module::​Iterator> ​ (
 +    [paramDaoValue] => <​Boolean>​ False
 +    [paramErrorAtEmptyList] => <​Boolean>​ False
 +    [paramIndexInsteadKey] => <​Boolean>​ False
 +    [paramListNextNoParamsAsToNext] => <​Boolean>​ True
 +    [paramNothingAsEmptyList] => <​Boolean>​ False
 +    [isInitialized] => <​Boolean>​ True
 +    [isEmpty] => <​Boolean>​ False
 +    [count] => <​Long>​ 2
 +    [BOF] => <​Boolean>​ True
 +    [EOF] => <​Boolean>​ False
 +    [absolutePosition] => <​Long>​ -1
 +    [index] => <​Long>​ -1
 +    [key] => <​Long>​ -1
 +    [source] => <​Variant()> ​ (
 +        [#0] => <​Integer>​ 1
 +        [#1] => <​Integer>​ 2
 +    )
 +
 +)
 +
 +'und so kommt es mit print_l
 +print_l it
 +<​Variant()> ​ (
 +    [#0] => <​Integer>​ 1
 +    [#1] => <​Integer>​ 2
 +)</​code>​
  
 ==== Diverse Verschachtelungen ==== ==== Diverse Verschachtelungen ====
Line 349: Line 390:
 print_r "​abc(""​Hallo Welt"&​ chr(34) & "​)",​ prEscapeDoubleQuotes+prStringDoubleQuotes print_r "​abc(""​Hallo Welt"&​ chr(34) & "​)",​ prEscapeDoubleQuotes+prStringDoubleQuotes
 "​abc(""​Hallo Welt""​)"</​code>​ "​abc(""​Hallo Welt""​)"</​code>​
 +
 +==== Beispiel zu dRx() ====
 +Die Patterns sind nach [[vba:​tutorials:​regexptest|]] zusammengestellt.
 +> Siehe auch [[vba:​cast:​cregexp|]]
 +
 +Nur Pattern. Das RegExp Objekt wird ausgegeben
 +<code vb>dRx "​^(\d{3}).*\.(\w{3,​})$"​
 +<​IRegExp2> ​ (
 +    [Pattern] => <​String>​ '​^(\d{3}).*\.(\w{3,​})$'​
 +    [Global] => <​Boolean>​ False
 +    [IgnoreCase] => <​Boolean>​ False
 +    [Multiline] => <​Boolean>​ False
 +)</​code>​
 +Mit einem Text zum Parsen wird automatisch geparst un dann ausgewertet
 +<code vb>dRx "​^(\d{3}).*\.(\w{3,​})$",​ "123 Mein test.xlsx"​
 +<​IMatchCollection2> ​ (
 +    [0] => <​IMatch2> ​ (
 +        [Match] => <​String>​ '123 Mein test.xlsx'​
 +        [FirstIndex] => <​Long>​ 0
 +        [SubMatches] => <​ISubMatches> ​ (
 +            [0] => <​String>​ '​123'​
 +            [1] => <​String>​ '​xlsx'​
 +        )
 +    )
 +)</​code>​
 +Mit einem Replace-Text wird dies ebenfalls ausgewertet
 +<code vb>dRx "​^(\d{3}).*\.(\w{3,​})$",​ "123 Mein test.xlsx",​ "​OUT_$1.$2"​
 +<​String>​ '​OUT_123.xlsx'</​code>​
 +Natürlich kann man auch die normalen print_r() Paramters mitgeben
 +<code vb>dRx "​^(\d{3}).*\.(\w{3,​})$",​ "123 Mein test.xlsx",​ "​OUT_$1.$2",​ prStringDoubleQuotes
 +"​OUT_123.xlsx"​
 +
 +dRx "​^(\d{3}).*\.(\w{3,​})$",​ "123 Mein test.xlsx",​ "​OUT_$1.$2",​ prNoParams
 +OUT_123.xlsx
 +
 +? dRx("​^(\d{3}).*\.(\w{3,​})$",​ "123 Mein test.xlsx",​ "​OUT_$1.$2",​ prNoParams, prReturn)
 +OUT_123.xlsx</​code>​
 +
 +==== Beispiel zu analyze() ====
 +Die Funktion gibt mit den Standardeinstellungen den Text zurück. Das ist praktisch für den Einsatz in einer Abfrage/​SQL.
 +
 +Abfrageeditor
 +<​code>​DebugMyField:​ analyze([MY_FIELD])</​code>​
 +Im SQL
 +<code sql>​analyze([MY_FIELD]) AS DebugMyField</​code>​
 +<code sql>​SELECT
 + *,
 + analyze([MY_FIELD]) AS DebugMyField
 +FROM test_analyze;​
 +
 +DebugMyField ​     | ID | MY_FIELD | DESCRIPTION ​                                  
 +------------------|----|----------|-----------------------------------------------
 +<​String>​ '​a' ​     | 1  | a        | Einfacher String ​                             ​
 +<​String>​ 'a ' ​    | 2  | a        | String mit folgenden Leerzeichen ​             ​
 +<​Null> ​           | 3  |          |                                               
 +<​String>​ ' ​   ' ​  | 4  |          | Ein String der nur aus Leerzeichen besteht ​   ​
 +<​String>​ '​\n\r' ​  | 5  |          | Ein Zeilenumbruch (Wagenrücklauf & neue Zeile)
 +                       ​| ​         |
 +<​String>​ '​\u0001'​ | 6  |          | Das Zeichen mit dem ASCII-Code 1           </​code>​
 +
  
 ===== Definitionen ===== ===== Definitionen =====
Line 359: Line 460:
 ) As String ) As String
 </​code>​ </​code>​
 +
 +===== Definition =====
  
 === Parameter-Liste === === Parameter-Liste ===
Line 419: Line 522:
 ' * @return Variant ​    ​Nichts oder die Analyse als String ' * @return Variant ​    ​Nichts oder die Analyse als String
 Public Function c(ByRef iExpression As Variant) As String</​code>​ Public Function c(ByRef iExpression As Variant) As String</​code>​
 +
 +==== dRx() ====
 +Ein Spezialfall zum Testen von RegEx Patterns
 +\\ Die Patterns sind nach [[vba:​tutorials:​regexptest|]] zusammengestellt.
 +> Siehe auch [[vba:​cast:​cregexp|]]
 +
 +<code vb>'/​**
 +' * Spezialfall zum einfach RegExp testen zu können
 +' * [D]ebug[R]eg[E]xp
 +' * @param ​ String ​     Pattern
 +' * @param ​ String ​     zu untersuchneder Text. Wenn Leer, dann wird der RegExp analysiert
 +' * @param ​ String ​     Replace. Wenn leer, dann wird der Exeute analysiert, ansonsten das Replaceergebnis
 +' * @param ​ enuPrintRParams
 +' * @param ​ enuPrintROutputMethode
 +' * @return Variant ​    ​Nichts oder die Analyse
 +' */
 +Public Function dRx( _
 +        ByVal iPattern As String, _
 +        Optional ByVal iText As String, _
 +        Optional ByVal iReplace As String, _
 +        Optional ByVal iParams As enuPrintRParams = prParamsDefault,​ _
 +        Optional ByVal iReturn As enuPrintROutputMethode = prConsole _
 +)</​code>​
 +
 +
 +==== analyze() ====
 +<code vb>'/​**
 +' * Eine ganz einfache Form, die den Wert zurückgibt. Ist Praktisch um in einem SQL angewendet zu werden
 +' * @param ​ Variant ​    Zu prüfende Variable
 +' * @return Variant ​    die Analyse als String
 +' */
 +Public Function analyze(ByRef iExpression As Variant) As String
 +    analyze = print_r(iExpression,​ prParamsDefault,​ prReturn)
 +End Function</​code>​
  
 ==== Ausgewertete Variablen/​Obejekte ==== ==== Ausgewertete Variablen/​Obejekte ====
vba/functions/print_r/index.1505379778.txt.gz · Last modified: 14.09.2017 11:02:58 by yaslaw