User Tools

Site Tools


vba:classes:liststream

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:classes:liststream [18.01.2023 13:10:58]
yaslaw [Listengrössen Methoden]
vba:classes:liststream [02.08.2023 11:40:26] (current)
yaslaw [Funktions-Aliase]
Line 86: Line 86:
     [1] => <​Date>​ 22.03.2020     [1] => <​Date>​ 22.03.2020
     [2] => <​Date>​ 23.03.2020     [2] => <​Date>​ 23.03.2020
 +)</​code>​
 +
 +Achtung! ListStream kann auch statisch verwendet werden. Muss dann aber über initialize() gefüttert werden
 +<code vb>​ListStream.initialize("​[a,​b,​c]"​)
 +d ListStream.list
 +<​Dictionary> ​ (
 +    [0] => <​String>​ '​a'​
 +    [1] => <​String>​ '​b'​
 +    [2] => <​String>​ '​c'​
 +)</​code><​code vb>​Public Sub test1()
 +    ListStream.initialize ("​[a,​b,​c]"​)
 +End Sub
 +
 +Public Sub test2()
 +    d ListStream.list
 +End Sub
 +'​Direktfenster:​
 +test1
 +test2
 +<​Dictionary> ​ (
 +    [0] => <​String>​ '​a'​
 +    [1] => <​String>​ '​b'​
 +    [2] => <​String>​ '​c'​
 )</​code>​ )</​code>​
  
Line 125: Line 148:
   * {Methode}**K**:​ Dieselbe Methode, gibt aber kein ListSream zurück sondern den Key. zB: ''​Key = obj.popK()''​   * {Methode}**K**:​ Dieselbe Methode, gibt aber kein ListSream zurück sondern den Key. zB: ''​Key = obj.popK()''​
   * {Methode}**LS**:​ Bei Methoden die normalerweise einen Wert zurückgeben,​ gibt es hier den LS zurück   * {Methode}**LS**:​ Bei Methoden die normalerweise einen Wert zurückgeben,​ gibt es hier den LS zurück
 +  * {Methode}**N**:​ Dieselbe Methode, gibt aber kein ListSream zurück sondern den Node. zB: ''​node = obj.popN()''​
 +  * {Methode}**E**:​ Dieselbe Methode, gibt aber kein ListSream zurück sondern die ListStreamEntity.
 +Es gibt auch kombinationan davon. zB. **k**Remove**V**()
 +  ​
 +
 +==== Node ====
 +Als Node wird ein einzelner Eintrag bezeichnet inkl. des Keys und der Position in der Liste. Damit es keine weitere Klasse braucht, ist das in dem Fall ein Array(1 to 3).
 +
 +Die einzelnen Elemente könne über den Array-Index abgerufen werden. Die Array-Indexe der einzelnene Teile sind im Enum enuWorkWith hinterlegt. Das ergibt eine Array(key, value, index)
 +<code vb>d listStream("​{a:​1,​b:​2,​c:​3}"​).getNode(1)
 +<​Variant()> ​ (
 +    [#1] => <​String>​ '​b'​
 +    [#2] => <​Long>​ 2
 +    [#3] => <​Integer>​ 1
 +)
 +
 +d listStream("​{a:​1,​b:​2,​c:​3}"​).getNode(1)(wwKey)
 +<​String>​ '​b'​
 +
 +set ls = listStream("​{a:​1,​b:​2,​c:​3}"​)
 +ls.toNext
 +d ls.getNode
 +<​Variant()> ​ (
 +    [#1] => <​String>​ '​b'​
 +    [#2] => <​Long>​ 2
 +    [#3] => <​Long>​ 1
 +)
 +</​code>​
 ==== Zugriff auf das Listenobjekt ==== ==== Zugriff auf das Listenobjekt ====
 Auf die aktuelle Liste, ein Dictionary, kann jederzeit von aussen mit der Eigenschaft list zugegriffen werden Auf die aktuelle Liste, ein Dictionary, kann jederzeit von aussen mit der Eigenschaft list zugegriffen werden
Line 739: Line 790:
 d v d v
 <​Long>​ 2 <​Long>​ 2
 +
 +'​iRemoveK
 +Set ls = ListStream("​{a:​1,​b:​2,​c:​3}"​)
 +d ls.iRemoveV(1,​ k)
 +<​Long>​ 2
 +d k
 +<​String>​ '​b'​
 +d ls.list
 +<​Dictionary> ​ (
 +    [a] => <​Long>​ 1
 +    [c] => <​Long>​ 3
 +)
 </​code>​ </​code>​
 ---- ----
Line 2346: Line 2409:
     Debug.Print ls.value ​       'a     Debug.Print ls.value ​       'a
     Debug.Print ls.value(1) ​    '​b</​code>​     Debug.Print ls.value(1) ​    '​b</​code>​
 +
 +=== node ===
 +node an der Position [[#pos]]
 +<​code>​node = ls.node([pos])</​code>​
 +
 +^ Parameter ^ Typ ^ Standard ^ Beschreibung ^
 +| pos | Long | Aktuelle Position | |
 +| return | Node | | |
 +
 +<code vb>Set ls = ListStream("​{AA:​a,​BB:​b,​CC:​c}"​)
 +ls.toFirst
 +d ls.node()
 +<​Variant()> ​ (
 +    [#1] => <​String>​ '​AA'​
 +    [#2] => <​String>​ '​a'​
 +    [#3] => <​Long>​ 0
 +)</​code>​
 +
 === setPos() === === setPos() ===
 setPos() ist im Gegensatz zu [[#pos]] kein Property sondern eine Funktion. Diese führt set pos aus und gibt den neuen ListSTream zurück setPos() ist im Gegensatz zu [[#pos]] kein Property sondern eine Funktion. Diese führt set pos aus und gibt den neuen ListSTream zurück
Line 2360: Line 2441:
     Debug.Print "​newLs",​ ls2.pos ​   ' 1</​code>​     Debug.Print "​newLs",​ ls2.pos ​   ' 1</​code>​
 ==== Statische Hilfsmethoden ==== ==== Statische Hilfsmethoden ====
-Das sind zusätzliche Funktionen, die nicht direkt auf die Liste bezogen sind.+Das sind zusätzliche Funktionen, die nicht direkt auf die Liste bezogen sind. Sie werden intern genutzt, können aber auch anderwertig praktisch sein 
 + 
 +=== isList() === 
 +Eine Prüfung ob ListStream die Variable als Liste und somit als Quelle akzeptiert. 
 +^ Parameter ^ Typ ^ Standard ^ Beschreibung ^ 
 +| list | Variant | | Variable die geprüft werden soll | 
 +| return | Boolean | | Formatierter Wert oder eine Liste mit den Formatierten Werten | 
 + 
 +<code vb>?​ListStream.isList(array(1,​2,​3)) 
 +True 
 + 
 +'Json wird als Liste erkannt 
 +?​ListStream.isList("​[1,​2,​3]"​) 
 +True 
 + 
 +?​ListStream.isList(null) 
 +False 
 + 
 +?​ListStream.isList("​123"​) 
 +False</​code>​
  
 === var2CodeStr() === === var2CodeStr() ===
-Gibt den Value in VBA-Code Form zurück. Kann für Evals etc. benutzt werden+Gibt den Value in VBA-Code Form zurück. Kann für Evals etc. benutzt werden
 +Akzeptiert auch alle Listen wie sie mit der Methode isList() als True zurückgegeben wird
 ^ Parameter ^ Typ ^ Standard ^ Beschreibung ^ ^ Parameter ^ Typ ^ Standard ^ Beschreibung ^
 | item | Variant | | Wert oder Array von Werten der zu Code-String umgewandelt werden soll | | item | Variant | | Wert oder Array von Werten der zu Code-String umgewandelt werden soll |
Line 2383: Line 2484:
  
 ? ListSTream.var2CodeStr(null,​vbString,​sqlNullToEmpty,​ "​N/​A"​) ? ListSTream.var2CodeStr(null,​vbString,​sqlNullToEmpty,​ "​N/​A"​)
-'​N/​A'​</​code> ​   ​+'​N/​A'​
  
 +Set dict = ListStream("​[1,​b]"​).add(DateTime.timeDT).add(null).list
 +? ListStream.var2CodeStr(dict,​ vbString)
 +'​1',​ '​b',​ '​01.02.2023 11:​54:​55',​ NULL
 +</​code> ​   ​
 +
 +=== castValue() ===
 +<code vb>d ListStream.castValue(date,​ vbString)
 +<​String>​ '​01.02.2023'</​code>​
 +
 +=== emptyArray() ===
 +<code vbd>d ListStream.createEmptyArray(vbDate)
 +<​Date()> ​ ()
 +
 +d ListStream.createEmptyArray(vbString,​ 2, 5)
 +<​String()> ​ (
 +    [#5] => <​String>​ ''​
 +    [#6] => <​String>​ ''​
 +)
 +</​code>​
  
 ---- ----
  
vba/classes/liststream.1674043858.txt.gz · Last modified: 18.01.2023 13:10:58 by yaslaw