ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 16.03.2000

Diese Seite wurde zuletzt aktualisiert am 16.03.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Schlüssel zählen

Zurück...


Anzeige

(-hg) mailto:hg_createkeys@aboutvb.de

Sie kennen sicher die Aufgabe, eindeutige Schlüssel zum Einfügen von Elementen in Collections zu finden. Wenn die einzufügenden Elemente prinzipiell den gleichen Schlüsselnamen bekommen sollen, müssen die Schlüssel durchnummeriert werden, um eindeutig zu bleiben - zum Beispiel:

Erster Schlüssel:  "Schlüssel"
Zweiter Schlüssel: "Schlüssel(2)"
Dritter Schlüssel: "Schlüssel(3)"
usw.

Die Funktion CreateNumberedKey (bzw. CreateNumberedKeyObj für Collections, die Objekte enthalten soll) liefert automatisch solche Schlüssel. Sie übergeben ihr mindestens den Basis-Schlüsselnamen und die betreffende Collection (Dies kann eine Visual Basic Standard-Collection sein, aber auch eine beliebige andere Collection wie die ListItems oder Nodes der Microsoft CommomControls).

Optional können Sie in den Parametern LeftSep und RightSep angeben, ob und wie die Nummerierung vom eigentlichen Schlüsselnamen abgesetzt werden soll. Voreingestellt sind runde Klammern. Soll die Nummer direkt ohne Trennung angehängt werden, übergeben Sie statt dessen einfach zwei leere Strings. Oder Sie übergeben eckige Klammern, oder linksseitig einen Bindestrich und rechtsseitig ein Leerzeichen - Sie haben die freie Wahl.

Zusätzlich können Sie im weiteren optionalen Parameter CounterBase angeben, mit welcher Zahl die Nummerierung beginnen soll. In FirstNumbered geben Sie noch an, ob die Nummerierung in jedem Fall erfolgen soll, oder ob sie erst einsetzen soll, wenn der Basis-Schlüsselname bereits einmal vergeben worden ist.

Public Function CreateNumberedKey(Key As String, _
 Collection As Object, _
 Optional LeftSep As String = "(", _
 Optional RightSep As String = ")", _
 Optional ByVal CounterBase As Long = 1, _
 Optional ByVal FirstNumbered As Boolean)

  Dim nCounter As Long
  Dim nKey As String
  Dim nItem As Variant
  
  nCounter = CounterBase
  If FirstNumbered Then
    nKey = Key & LeftSep & CStr(nCounter) & RightSep
  Else
    nKey = Key
  End If
  If Collection.Count = 0 Then
    CreateNumberedKey = nKey
    Exit Function
  End If
  On Error Resume Next
  Do
    nItem = Collection(nKey)
    If Err.Number = 5 Then
      Exit Do
    Else
      nCounter = nCounter + 1
      nKey = Key & LeftSep & CStr(nCounter) & RightSep
    End If
  Loop
  CreateNumberedKey = nKey
End Function

Public Function CreateNumberedKeyObj(Key As String, _
 Collection As Object, Optional LeftSep As String = "(", _
 Optional RightSep As String = ")", _
 Optional ByVal CounterBase As Long = 1, _
 Optional ByVal FirstNumbered As Boolean)

  Dim nCounter As Long
  Dim nKey As String
  Dim nItem As Object
  
  nCounter = CounterBase
  If FirstNumbered Then
    nKey = Key & LeftSep & CStr(nCounter) & RightSep
  Else
    nKey = Key
  End If
  If Collection.Count = 0 Then
    CreateNumberedKeyObj = nKey
    Exit Function
  End If
  On Error Resume Next
  Do
    Set nItem = Collection(nKey)
    If Err.Number Then
      Exit Do
    Else
      nCounter = nCounter + 1
      nKey = Key & LeftSep & CStr(nCounter) & RightSep
    End If
  Loop
  CreateNumberedKeyObj = nKey
End Function

Die Funktionen CreateNumberedKey und CreateNumberedKeyObj liefern automatisch durchnummerierte Schlüssel zum Einfügen von Elementen in eine Colletion

Nach dem gleichen Prinzip funktionieren die Funktionen CreatePrefixedKey bzw. CreatePrefixedKeyObj. Sie werden dies vom Explorer her kennen, der den Dateinamen von Kopien stur ein "Kopie von " voranstellt:

"EineDatei.xyz"
"Kopie von EineDatei.xyz"
"Kopie von Kopie von EineDatei.xyz"
usw.

Hier geben Sie zunächst den voranzustellenden String, den Schlüsselnamen und die betreffende Collection an. Optional können Sie auch hier wieder, im optionalen Parameter FirstPrefixed, angeben, ob gleich beim ersten Versuch das Präfix vorangestellt werden soll.

Public Function CreatePrefixedKey(Prefix As String, _
 Key As String, Collection As Object, _
 Optional ByVal FirstPrefixed As Boolean) As String

  Dim nKey As String
  Dim nItem As Variant
  
  If FirstPrefixed Then
    nKey = Prefix & Key
  Else
    nKey = Key
  End If
  If Collection.Count = 0 Then
    CreatePrefixedKey = nKey
    Exit Function
  End If
  On Error Resume Next
  Do
    nItem = Collection(nKey)
    If Err.Number = 5 Then
      Exit Do
    Else
      nKey = Prefix & nKey
    End If
  Loop
  CreatePrefixedKey = nKey
End Function

Public Function CreatePrefixedKeyObj(Prefix As String, _
 Key As String, Collection As Object, _
 Optional ByVal FirstPrefixed As Boolean) As String

  Dim nKey As String
  Dim nItem As Object
  
  If FirstPrefixed Then
    nKey = Prefix & Key
  Else
    nKey = Key
  End If
  If Collection.Count = 0 Then
    CreatePrefixedKeyObj = nKey
    Exit Function
  End If
  On Error Resume Next
  Do
    Set nItem = Collection(nKey)
    If Err.Number = 5 Then
      Exit Do
    Else
      nKey = Prefix & nKey
    End If
  Loop
  CreatePrefixedKeyObj = nKey
End Function 

Die Funktionen CreatePrefixedKey und CreatePrefixedKeyObj liefern eindeutige Schlüssel mit einem gegebenenfalls (mehrfach) vorangestellten Präfix.


Modul modCreateKeys (modCreateKeys.bas - ca. 3,2 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikel

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer