vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Arrays   |   VB-Versionen: VB625.01.17
Element aus String-Array löschen / Version einfach

Elemente aus TextFeld() löschen - nicht schnell aber sehr einfach

Autor:   Rolf WahlbrinckBewertung:  Views:  4.245 
ohne HomepageSystem:  Vista, Win7, Win8, Win10kein Beispielprojekt 

Nachfolgend eine kleine einfache Prozedur, mit der sich ein Element aus einem Arrays löschen lässt.

So gibt es keine Probleme:
- Erstes Feld löschbar
- Letztes Feld löschbar
- Alle Felder löschbar - ergibt dann leeres Feld

' KillFlag = z.B. CHR$(1)
 
' man will z.B. nur ein Element löschen, hier Feld 5:
' ZeileInFeldLoeschenFilter FeldT(), 5, Killflag
 
' man will z.B. zwei Elemente löschen, hier Feld 5 und 7:
' FeldT(5) = Killflag: Feld(7) = Killflag
' ZeileInFeldLoeschenFilter FeldT(), -1, Killflag ' -1 -> Flag nur extern gesetzt
 
' man will z.B. zwei Elemente löschen, hier Feld 5 und 7:
' FeldT(5) = Killflag ' extern, FeldT(7) intern
' ZeileInFeldLoeschenFilter FeldT(), 7, Killflag ' -1 -> Flag intern und extern gesetzt
Sub ZeileInFeldLoeschenFilter(ByRef Feld() As String, PlatzNummer As Long, _
  Killflag As String)
 
  ' PlatzNummer < 0 bedeutet Killflag wurde nur extern gesetzt, 
  ' z.B. Feld(2) = Killflag, Feld(3) = Killflag
 
  ' Nur wenn Killflag intern gewünscht wird, sonst Platznummer < 0
  If PlatzNummer >= 0 Then
    Feld(PlatzNummer) = Killflag
  End If
 
  Feld() = Filter(Feld(), Killflag, False, vbBinaryCompare)
End Sub

Beispiele

Dim FeldT()  As String
Dim KillFlag As String: KillFlag = "°" ' z.B.
 
' Zeilen löschen extern
ReDim FeldT(2)
FeldT(0) = "Zeile 0 Start"
FeldT(1) = "Zeile 1 Start"
FeldT(2) = "Zeile 2 Start"
 
FeldT(1) = KillFlag
ZeileInFeldLoeschenFilter FeldT(), -1, KillFlag
MsgBox Join(FeldT(), "|"), , "Markierte Zeile 1 wurde extern gelöscht"
MsgBox UBound(FeldT())
' Zeilen löschen intern
ReDim FeldT(2)
FeldT(0) = "Zeile 0 Start"
FeldT(1) = "Zeile 1 Start"
FeldT(2) = "Zeile 2 Start"
 
ZeileInFeldLoeschenFilter FeldT(), 1, KillFlag
MsgBox Join(FeldT(), "|"), , "Zeile 1 wurde intern gelöscht"
MsgBox UBound(FeldT())
' Zeilen löschen extern und intern
ReDim FeldT(2)
FeldT(0) = "Zeile 0 Start"
FeldT(1) = "Zeile 1 Start"
FeldT(2) = "Zeile 2 Start"
 
FeldT(1) = KillFlag ' extern
ZeileInFeldLoeschenFilter FeldT(), 2, KillFlag
MsgBox Join(FeldT(), "|"), , "Zeile 1 extern, Zeile 2 intern gelöscht"
MsgBox UBound(FeldT())
' Würde gesamtes Feld löschen
ReDim FeldT(2)
FeldT(0) = "Zeile 0 Start"
FeldT(1) = "Zeile 1 Start"
FeldT(2) = "Zeile 2 Start"
 
FeldT(0) = KillFlag: FeldT(1) = KillFlag: FeldT(2) = KillFlag  ' alle extern
ZeileInFeldLoeschenFilter FeldT(), -1, KillFlag
MsgBox Join(FeldT(), "|"), , "Zeile 0,1,2 extern gelöscht, Feld ist damit leer"
MsgBox UBound(FeldT())



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2019 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.