This shows you the differences between two versions of the page.
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 ==== |