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

https://www.vbarchiv.net
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB618.09.09
ISBN-Nummer auf Gültigkeit prüfen II

Eine VB6-Funktion zum Prüfen einer beliebigen ISBN-Nummer auf ihre Gültigkeit, wobei sowohl das ISBN-10 als auch das ISBN-13 Verfahren berücksichtigt wird.

Autor:   Dieter OtterBewertung:  Views:  8.041 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Vor kurzem haben wir Ihnen einen .NET Funktion vorgestellt, die zeigt, wie man sowohl 10-stellige, als auch 13-stellige ISBN-Nummern auf Gültigkeit prüfen kann.

Auf Anfragen hin haben wir diese Funktion nach VB6 konvertiert, so dass auch noch alle VB6'ler von dieser Funktion profiteren können.

' ISBN-Nummer auf Gültigkeit prüfen
Public Function CheckISBN(ByVal sISBN As String) As Boolean
  Dim nSumme As Long
  Dim i As Long
  Dim bResult As Boolean
  Dim Pruefziffer As Integer
 
  ' Bindestriche und Leerzeichen entfernen
  sISBN = Replace(sISBN, "-", "")
  sISBN = Replace(sISBN, " ", "")
 
  If Len(sISBN) > 1 Then
    ' letzte Ziffer = Prüfziffer
    ' Sonderfall X = 10
    If UCase$(Right$(sISBN, 1)) = "X" Then
      Pruefziffer = 10
    Else
      Pruefziffer = Val(Right$(sISBN, 1))
    End If
 
    If Len(sISBN) = 13 Then
      ' ISBN-13
      Dim Summe1 As Long
      Dim Summe2 As Long
 
      ' Summe der Ziffern 1,3,5,7,9,11 bilden
      ' Summe der Ziffern 2,4,6,8,10,12 bilden
      For i = 0 To Len(sISBN) - 2
        If i Mod 2 = 0 Then
          Summe1 = Summe1 + Val(Mid$(sISBN, i + 1, 1))
        Else
          Summe2 = Summe2 + Val(Mid$(sISBN, i + 1, 1))
        End If
      Next
 
      ' Letzte Stelle der Aufsummerung von 10 abziehen
      ' Als Ergebnis erhalten wir die korrekt berechnete Prüfziffer
      If CInt((10 - ((Summe1 + 3 * Summe2) Mod 10)) Mod 10) = Pruefziffer Then
        bResult = True
      End If
 
    Else
      ' ISBN-10
 
      ' Summe bilden (alle Ziffern bis auf die letzte Stelle)
      For i = 1 To Len(sISBN) - 1
        nSumme = nSumme + (Val(Mid$(sISBN, i, 1)) * i)
      Next i
 
      ' Errechnte Summe MOD 11 muss gleich der
      ' Prüfziffer sein
      If nSumme Mod 11 = Pruefziffer Then
        bResult = True
      End If
    End If
  End If
 
  CheckISBN = bResult
End Function



Anzeige

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

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-2024 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.