Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB6 | 18.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 Otter | Bewertung: | Views: 8.041 |
www.tools4vb.de | System: 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