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 24.09.2001

Diese Seite wurde zuletzt aktualisiert am 24.09.2001
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...

Babylonische Wahrheiten

Zurück...


Anzeige

(-hg) mailto:hg_sbool@aboutvb.de

Mehrere Wahrheiten gibt es ja eigentlich nicht, sondern immer nur eine. Allerdings gibt es eine ganze Reihe verschiedener Möglichkeiten, eine Wahrheit auszudrücken. natürlich ist hier nicht die Rede von irgendwelchen philosophischen Wahrheiten, sondern von logischen "Wahrheiten", von Zuständen, im logischen Sinne "wahr" oder "falsch" sind oder als solche betrachtet werden sollen. Das erste Bezeichnungspaar in unserer Sprache haben wir nun auch schon genannt, nämlich "wahr/falsch". Weitere Bezeichnungspaare wären etwa "ja/nein", "an/aus", "ein/aus", "geschlossen/offen" und dergleichen mehr. Und da es von solchen Bezeichnungspaaren in jeder Sprache eine ganze Reihe gibt, ist es eigentlich nicht verwunderlich, dass Visual Basic neben seinem gewissermaßen muttersprachlichen "true/false" nur noch das jeweilige landessprachliches Paar kennen will. Wenn Sie also irgendein anderes Bezeichnungspaar verwenden möchten, können Sie nicht auf die VB-Konvertierungs-Funktionen CStr und CBool zurückgreifen, sondern benötigen eigene Funktionen.

Im einfachsten Fall deklarieren Sie ein entsprechendes String-Variablen-Paar:

Public SFalse As String
Public STrue As String

und dazu zwei Funktionen, für jede Konvertierungs-Richtung eine:

Public Function CBoolS(BoolValue As Boolean) As String
  Select Case BoolValue
    Case False
      CBoolS = SFalse
    Case True
      CBoolS = STrue
  End Select
End Function

Public Function CSBool(BoolStr As String) As Boolean
  Select Case LCase$(BoolStr)
    Case LCase$(SFalse)
      CSBool = SFalse
    Case LCase$(STrue)
      CSBool = True
    Case Else
      Err.Raise 5
  End Select
End Function

Irgendwie ist das aber nicht sonderlich spannend und kaum einen Artikel wert, finden Sie nicht auch? Interessanter wäre es vielleicht, wenn die Funktion, die einen "Wahrheits"-String entgegen nimmt, so tolerant wäre, eine ganze Reihe an möglichen Bezeichnern, und wenn ebenfalls möglich, auch nur deren Anfangsbuchstaben, zu verstehen und "wahrheitsgemäß" zu interpretieren.

Kein Problem, meinen Sie? Einfach ein Array oder eine Collection aus den möglichen Bezeichnern anlegen und in einer Schleife durchlaufen. Ist der gegebene Bezeichner darunter, hat man den Treffer. Ok, so weit so gut - allerdings brauchen Sie zwei Arrays bzw. Collections - eines für die "Wahr"-Bezeichner, und eines für die "Falsch"-Bezeichner, die im Prinzip immer beide durchsucht werden müssten.

Anders herum gedacht geht es jedoch ein wenig eleganter: Sie stopfen den zu einem Bezeichner gehörenden Wahrheitswert selbst in eine Collection hinein, und verwenden den Bezeichner lediglich als Schlüssel. Sie brauchen nicht zwischen "Wahr"- und "Falsch"-Bezeichnern zu unterscheiden - es können letztlich beliebig viele True- und False-Werte abgelegt werden. Zur Prüfung, um welchen Wahrheitswert es sich bei einem Bezeichner handelt, bzw. ob es sich überhaupt um einen gültigen Bezeichner handelt, versuchen Sie einfach, einen Wert unter dem Bezeichner als Schlüssel aus der Collection auszulesen. Existiert der Schlüssel, erhalten Sie den betreffenden Wahrheitswert, also True oder False, zurück. Existiert er nicht, wird ein Laufzeitfehler ausgelöst, den Sie abfangen und gegebenenfalls als indifferenten, neutralen, nicht initialisierten Wert usw. interpretieren können.

Private mBoolStrings As Collection

Public Function SBool(Str As String) As Boolean
  If mBoolStrings Is Nothing Then
    zInit
  End If
  On Error Resume Next
  SBool = mBoolStrings(LCase$(Str))
  If Err.Number Then
    On Error GoTo 0
    Err.Raise 5
  End If
End Function

Private Sub zInit()
  Set mBoolStrings = New Collection
  With mBoolStrings
    .Add True, "y"
    .Add True, "1"
    .Add True, "t"
    .Add True, "yes"
    .Add True, "-1"
    .Add True, "true"
    .Add True, "on"
    .Add True, "ok"
    .Add False, "n"
    .Add False, "0"
    .Add False, "f"
    .Add False, "no"
    .Add False, "false"
    .Add False, "off"
    .Add False, "cancel"
    
    .Add True, "j"
    .Add True, "w"
    .Add True, "ja"
    .Add True, "wahr"
    .Add True, "ein"
    .Add True, "an"
    .Add True, "weiter"
    .Add False, "nein"
    .Add False, "falsch"
    .Add False, "aus"
    .Add False, "abbrechen"
  End With
End Sub

Mit den Prozeduren Add und Remove können Sie jederzeit weitere Bezeichner hinzufügen bzw. wieder entfernen. Natürlich können Sie auch die vordefinierte Initialisierung beliebig Ihren (Sprach-)Bedürfnissen anpassen.

Public Sub Add(Str As String, ByVal BoolValue As Boolean)
  If mBoolStrings Is Nothing Then
    zInit
  End If
  On Error Resume Next
  mBoolStrings.Add BoolValue, Str
End Sub

Public Sub Clear()
  Set mBoolStrings = Nothing
End Sub

Public Sub Remove(Str As String)
  On Error Resume Next
  mBoolStrings.Remove Str
End Sub

Modul modSBool (modSBool.bas - ca. 2,2 KB)


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

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