Konto_check

Bibliothek zum Test deutscher Bankkonten

Überblick Testseite Download BLZ-Daten Beispiele Programme
Konto_check BeispieleBeispiel in VB

Bibliothek zum Test deutscher Bankkonten

Anwendung von konto_check in Visual Basic.NET

Dies ist das mini.vb Programm in Visual Basic .NET. Ab Version 4.1 von konto_check ist auch das vollständige Interface für Visual Basic .NET in der Windows-Distribution enthalten. Dieses ist wesentlich umfangreicher (Überladungen für alle Funktionen mit diversen Parametern) und enthält auch die Schnittstelle zu den Such- und IBAN-Routinen.


' Dies ist ein kleines Programm das eine Liste von BLZ/Kontonummer-Paaren (durch Blank getrennt)
' einliest, auf Gültigkeit testet und das Ergebnis in eine Ausgabedatei schreibt. Es ist nur als
' kleines Beispiel für die Anwendung der konto_check Bibliothek unter C# gedacht; das komplette
' Interface für die Bibliothek ist natürlich einiges größer und mächtiger.
'
' Dieses Programm wurde mit der freien Version des Instant VB Converters
' von http://www.tangiblesoftwaresolutions.com/Product_Details/Instant_VB.html
' aus mini.cs generiert; es kann mit dem Befehl >>vbc mini.vb<< übersetzt werden.

Imports System
Imports System.IO
Imports System.Runtime.InteropServices

Namespace mini
   Friend Class Program
#Region "Externals"
      <DllImport("konto_check.cdecl.dll", EntryPoint := "kto_check_init_p", CallingConvention := CallingConvention.Cdecl)> _
      Private Shared Function kto_check_init_i(ByVal lutName As String, ByVal required As Int32, ByVal [set] As Int32, ByVal incremental As Int32) As Int32
      End Function

      <DllImport("konto_check.cdecl.dll", EntryPoint := "kto_check_blz", CallingConvention := CallingConvention.Cdecl)> _
      Private Shared Function kto_check_blz(ByVal blz As String, ByVal kto As String) As Int32
      End Function

      <DllImport("konto_check.cdecl.dll", EntryPoint := "kto_check_retval2txt", CallingConvention:=CallingConvention.Cdecl)> _
      Private Shared Function kto_check_retval2txt(ByVal retval As Int32) As IntPtr
      End Function

      <DllImport("konto_check.cdecl.dll", EntryPoint := "lut_name", CallingConvention := CallingConvention.Cdecl)> _
      Private Shared Function lut_name(ByVal blz As String, ByVal zweigstelle As Int32, ByRef retval As Int32) As IntPtr
      End Function

      <DllImport("konto_check.cdecl.dll", EntryPoint := "lut_ort", CallingConvention := CallingConvention.Cdecl)> _
      Private Shared Function lut_ort(ByVal blz As String, ByVal zweigstelle As Int32, ByRef retval As Int32) As IntPtr
      End Function

      <DllImport("konto_check.cdecl.dll", EntryPoint := "lut_plz", CallingConvention := CallingConvention.Cdecl)> _
      Private Shared Function lut_plz(ByVal blz As String, ByVal zweigstelle As Int32, ByRef retval As Int32) As Int32
      End Function

      <DllImport("konto_check.cdecl.dll", EntryPoint := "cleanup_kto", CallingConvention:=CallingConvention.Cdecl)> _
      Private Shared Sub cleanup_kto()
      End Sub
#End Region

#Region "kc_defs"
      Private Shared Function kto_check_init() As Int32
         Return kto_check_init_i("", 7, 0, 0)
      End Function

      Private Shared Function bank_name(ByVal blz As String) As String
         Dim rv As Int32
         Return Marshal.PtrToStringAnsi(lut_name(blz, 0, rv))
      End Function

      Private Shared Function bank_plz(ByVal blz As String) As Int32
         Dim rv As Int32
         Return lut_plz(blz, 0, rv)
      End Function

' Das Interface ist für alle Funktionen auf die notwendigen Parameter
' reduziert; man kann es natürlich (mittels Überladung) wesentlich
' ausführlicher gestalten. Hier als Beispiel noch die Version der
' Funktion bank_ort() mit allen Parametern.

      Private Shared Function bank_ort(ByVal blz As String, ByVal zweigstelle As Int32, ByRef retval As Int32) As String
         Return Marshal.PtrToStringAnsi(lut_ort(blz, zweigstelle, retval))
      End Function

      Private Shared Function bank_ort(ByVal blz As String) As String
         Dim rv As Int32
         Return Marshal.PtrToStringAnsi(lut_ort(blz, 0, rv))
      End Function

      Private Shared Function retval2txt(ByVal retval As Int32) As String
         Return Marshal.PtrToStringAnsi(kto_check_retval2txt(retval))
      End Function

      Private Shared Sub kto_check_free()
         cleanup_kto()
      End Sub
#End Region

      Shared Sub Main(ByVal args() As String)
         Dim retval As Int32
         Dim blz, kto, s, retval_txt As String
         Dim s2() As String

         If args.Length < 2 Then
            Console.WriteLine("Aufruf: mini1 <eingabedatei> <ausgabedatei>")
            Console.ReadLine()
            Return
         End If

         Dim input As New StreamReader(args(0))
         Dim output As New StreamWriter(args(1))

         kto_check_init()
         s = input.ReadLine()
         Do While s IsNot Nothing
            s2 = s.Split(" "c)
         If s2.Length > 1 Then
            blz = s2(0)
            kto = s2(1)
            retval = kto_check_blz(blz, kto)
            retval_txt= retval2txt(retval)
            If retval >= 0 Then
               output.WriteLine(blz &" " & kto &": " & retval_txt &"; " & bank_name(blz) & ", " & bank_plz(blz).ToString() & " " & bank_ort(blz))
            Else
               output.WriteLine(blz &" " & kto &": " & retval_txt)
            End If
         Else
            output.WriteLine(s)
         End If
            s = input.ReadLine()
         Loop
         input.Close()
         output.Close()
         kto_check_free()
      End Sub
   End Class
End Namespace