[VB6] CustomInt - Integer mit beliebiger Länge

    • VB6

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Pascal.

      [VB6] CustomInt - Integer mit beliebiger Länge

      Hi!

      Ich sitze grad an nem Integer mit belieber Länge:
      so viele Bytes, wie VB in nen Array stopfen kann

      Der Name wird CustomInt sein.

      Ich poste das jetzt schon, weil ich wissen wollte, ob jemand irgendwelche speziellen funktionen braucht...



      Eingeplant sind bis jetzt:
      • Standardrechenoperationen (+, -, *, /)
      • Standardrechenoperationen mit Byte, Int und Long
      • Modulo (mod in VB)
      • Modulo mit Byte, Int und Long
      • Division + Modulo (gibt Ergenis speichern + Rest zurück geben)
      • Division + Modulo mit Byte, Int und Long
      • ToString (Dezimal-String)
      • ToHex (Hex-String)
      • Vergleiche (=, <>, >, <, >=, <=)
      Was sollte noch unbedingt drin sein?



      Bis jetzt fertig:
      • Plus (+)
      • Minus (-)
      • Laden aus Array
      • Laden aus Listbox (Listbox als Parameter übergeben)
      • Einzelne Werte setzen
      • Einzelne Werte auslesen
      • Redim
      • Redim Preserve
      • LowerBound (Property: ReadOnly, gibt 0 zurück)
      • UpperBound (Property: Read, Write: Redim Preserve)
      • Length (wie UpperBound, aber +1)
      • Clone: Erstellt eine neue Instanz und kopiert die Daten rein
      • CopyTo: Kopiert die Daten in den Parameter (anderer CustomInt)
      • CopyFrom: Kopiert die Daten aus dem Parameter (anderer CustomInt)
      • BytesPointer: Gibt die Adresse vom ersten Byte zurück (für CopyMemory / RTLMoveMemory)




      Das ganze ist in eine Klasse gepackt (CustomInt.Cls), es kommt aber noch ein Modul dazu.
      Bis jetzt ist das ganze nur als unsigned (nur positive Zahlen) geplant, braucht das jemand mit negativen Zahlen?

      Die Rechenoperationen werden in der Instanz auf die sie angewendet werden gespeichert.
      vergleich zu normalen Integer:

      Visual Basic-Quellcode

      1. x.Plus y
      2. x = x + y


      Um
      z = x + y
      auszuführen, verwendet man dann

      Visual Basic-Quellcode

      1. Set z = x.Clone
      2. z.Plus y



      Update:
      Minus ist auch fertig
      Vergleichsoperationen in die TODO-Liste geschrieben


      so long...
      Andy

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Mad Andy“ ()

      Die Reichweite ist übrigens von 0 bis 2^17179869176 - 1 - hab leider keinen Rechner gefunden, der mir das ausrechnen kann. Das Ergebnis nimmt (als Integer) mehr als 2GB Arbeitsspeicher ein!

      Für die Vorstellung: 2^32 = 4Mrd.


      so long..
      Andy
      Kann man das dann als richtigen Datentyp verwenden?

      Visual Basic-Quellcode

      1. Dim Zahl As CostumInt, Test As Integer, Test2 As Single
      2. Test = 88
      3. Zahl = 123 + Test
      4. Test2 = Round(Zahl / Test, 2)

      Oder geht das nur als Klasse?

      Visual Basic-Quellcode

      1. Dim Zahl As CostumInt, Test As Integer, Test2 As Single
      2. Test = 88
      3. Zahl.set(123)
      4. Zahl.addition(Test)
      5. Test2 = Round(Zahl.division(Test), 2)

      Ersteres wäre ja eine feine Sache auch für andere Dinge als nur Ganzzahlen.
      Gruß, Agent Smith 8-)

      activeFlags = (lazy OR weary)

      Lemgo-Verschwörung | Mathematics | VB-Paradise in blau