vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Riesige Zahlen in VB 
Autor: _Stephan_
Datum: 05.01.06 16:53

Würde ja also nur das Problem mit den Zahlen bleiben.
Wenn du dir die Zahl nur ansehen willst und nicht vor hat, damit effektiv zu rechnen, dann versuch mal diese Funktion hier.

Option Explicit
 
Dim strNumber As String
 
Private Sub Form_Load()
 
  strNumber = "12345678902547854785478775456554545464654654654654654746498"
  Call AddToNumber("123456789025478547854787754565545454465445646546498")
 
End Sub
 
Private Function AddToNumber(ByVal strNumber2Add As String)
 
  Dim intNumber As Integer         'akuelle Zahl
  Dim intNumber2Add As Integer
  Dim intCarry As Integer         'Übertrag
  Dim iItem As Integer            'Aktuelles Element
  Dim bReady As Boolean
  Dim strLeft As String
 
  While (bReady = False)
 
    'aktuelle Nummer für Berechnung
    If Len(strNumber) > iItem Then
      intNumber = CInt(Left$(Right$(strNumber, iItem + 1), 1))
    Else
      intNumber = 0
    End If
 
    'akuelle Zahl für Berechnung aus zu addierender Zahl
    If Len(strNumber2Add) > iItem Then
      intNumber2Add = CInt(Left$(Right$(strNumber2Add, iItem + 1), 1))
    Else
      intNumber2Add = 0
    End If
 
    'Prüfen ob fertig
    If (intNumber2Add = 0 And intNumber = 0) And (Len(strNumber) <= iItem And _
      Len(strNumber2Add) <= iItem) And intCarry = 0 Then
      bReady = True
    Else
 
      'Aktuelle Zahl + aktuell zu addierende Zahl + Übertrag
      intCarry = intNumber + intNumber2Add + intCarry
 
      If Len(strNumber) > iItem Then
        strLeft = Left$(strNumber, Len(strNumber) - (iItem + 1))
      Else
        strLeft = ""
      End If
 
      strNumber = strLeft & CStr(intCarry Mod 10) & Right$(strNumber, iItem)
 
      'Übertag berechnen
      intCarry = (intCarry - (intCarry Mod 10)) / 10
 
      iItem = iItem + 1
    End If
  Wend
 
End Function
Ein Versuch auf die Schnelle, scheint aber trotzdem richtig zu rechnen.

Wenn du das mit meiner Funktion vom Anfang koppelst, dann bekommst du soetwas in der Art:

Option Explicit
 
Dim strNumber As String
 
Private Sub Form_Load()
 
  Dim arr_vTest() As Variant
  arr_vTest = Array("a", "b", "c")
  Call DoIt(arr_vTest, 0, "")
 
  Debug.Print strNumber
 
End Sub
 
Private Function DoIt(arr_vItems() As Variant, iItem As Integer, strString As _
  String) As String
  Dim iIndex As Integer
  Dim sString As String
 
  For iIndex = LBound(arr_vItems) To UBound(arr_vItems)
    sString = strString & arr_vItems(iIndex)
 
    If iItem > 4 Then
      DoEvents
    End If
 
    If UBound(arr_vItems) = iItem Then
      'letztes element erreicht
      Debug.Print sString
      Call AddToNumber("1")
    Else
      Call DoIt(arr_vItems, iItem + 1, sString)
      Debug.Print sString
      Call AddToNumber("1")
    End If
  Next iIndex
 
End Function
 
 
Private Function AddToNumber(ByVal strNumber2Add As String)
 
  Dim intNumber As Integer         'akuelle Zahl
  Dim intNumber2Add As Integer
  Dim intCarry As Integer         'Übertrag
  Dim iItem As Integer            'Aktuelles Element
  Dim bReady As Boolean
  Dim strLeft As String
 
  While (bReady = False)
 
    'aktuelle Nummer für Berechnung
    If Len(strNumber) > iItem Then
      intNumber = CInt(Left$(Right$(strNumber, iItem + 1), 1))
    Else
      intNumber = 0
    End If
 
    'akuelle Zahl für Berechnung aus zu addierender Zahl
    If Len(strNumber2Add) > iItem Then
      intNumber2Add = CInt(Left$(Right$(strNumber2Add, iItem + 1), 1))
    Else
      intNumber2Add = 0
    End If
 
    'Prüfen ob fertig
    If (intNumber2Add = 0 And intNumber = 0) And (Len(strNumber) <= iItem And _
      Len(strNumber2Add) <= iItem) And intCarry = 0 Then
      bReady = True
    Else
 
      'Aktuelle Zahl + aktuell zu addierende Zahl + Übertrag
      intCarry = intNumber + intNumber2Add + intCarry
 
      If Len(strNumber) > iItem Then
        strLeft = Left$(strNumber, Len(strNumber) - (iItem + 1))
      Else
        strLeft = ""
      End If
 
      strNumber = strLeft & CStr(intCarry Mod 10) & Right$(strNumber, iItem)
 
      'Übertag berechnen
      intCarry = (intCarry - (intCarry Mod 10)) / 10
 
      iItem = iItem + 1
    End If
  Wend
 
End Function
Gruß Stephan
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Riesige Zahlen in VB880KaiserGimmel29.12.05 18:30
Re: Riesige Zahlen in VB692OldMan29.12.05 19:02
Re: Riesige Zahlen in VB587KaiserGimmel29.12.05 19:14
Re: Riesige Zahlen in VB659_Stephan_29.12.05 22:15
Re: Riesige Zahlen in VB638KaiserGimmel30.12.05 01:38
Re: Riesige Zahlen in VB538Hard30.12.05 15:25
Re: Riesige Zahlen in VB516KaiserGimmel30.12.05 15:32
Re: Riesige Zahlen in VB574_Stephan_30.12.05 16:44
Re: Riesige Zahlen in VB571KaiserGimmel30.12.05 16:48
Re: Riesige Zahlen in VB540_Stephan_30.12.05 16:51
Re: Riesige Zahlen in VB545KaiserGimmel30.12.05 17:00
Re: Riesige Zahlen in VB794[JoE]02.01.06 00:50
Re: Riesige Zahlen in VB567Guido Eisenbeis05.01.06 01:57
Re: Riesige Zahlen in VB542KaiserGimmel05.01.06 13:34
Re: Riesige Zahlen in VB525_Stephan_05.01.06 14:02
Re: Riesige Zahlen in VB488KaiserGimmel05.01.06 15:08
Re: Riesige Zahlen in VB473_Stephan_05.01.06 15:16
Re: Riesige Zahlen in VB494KaiserGimmel05.01.06 15:22
Re: Riesige Zahlen in VB482_Stephan_05.01.06 15:26
Re: Riesige Zahlen in VB513KaiserGimmel05.01.06 15:29
Re: Riesige Zahlen in VB488_Stephan_05.01.06 15:34
Re: Riesige Zahlen in VB500KaiserGimmel05.01.06 15:36
Re: Riesige Zahlen in VB479_Stephan_05.01.06 15:39
Re: Riesige Zahlen in VB497KaiserGimmel05.01.06 15:41
Re: Riesige Zahlen in VB485_Stephan_05.01.06 15:46
Re: Riesige Zahlen in VB499KaiserGimmel05.01.06 15:50
Re: Riesige Zahlen in VB471_Stephan_05.01.06 15:51
Re: Riesige Zahlen in VB475KaiserGimmel05.01.06 15:54
Re: Riesige Zahlen in VB540_Stephan_05.01.06 16:53
Re: Riesige Zahlen in VB486_Stephan_05.01.06 15:40

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel