vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  7.722 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein 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())