nur Zahlen mit 9 Stellen erlaubt :-(

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    nur Zahlen mit 9 Stellen erlaubt :-(

    Hallo,

    ich möchte gerne ein Programm erstellen, dass z.B. jedes A in eine Zahl z.B 1 verwandelt.
    Das klappt soweit. Doch jetzt möchte ich, diese Zahlenreihe mit Rechnungen verändern, dass man keine Reihenfolge mehr ableiten kann:

    VB.NET-Quellcode

    1. Dim code As Integer = CInt(TextBox2.Text)
    2. code = code / 35
    3. code = code * 29



    Mein Problem ist, dass der integer höchstens 9 stellige Zahlen akzeptiert, und ich habe keine andere Variable gefunden, die mehr akzeptiert :(
    Ich bekomme ab 10 Stellen immer die Fehlermeldung: Dividieren sie nicht durch 0.

    Vielen Dank, für eure Unterstützung!!! :thumbsup:
    Moin,

    CInt -> Integer.TryParse. Versuche mal Long bzw. Int64, das ist ein 64 Bit Integer, der somit 2^64 als Maximalwert haben kann. Was mich wundert ist das Dividieren durch 0. Die DivideByZeroException ist hier nämlich auf Anhieb dann nicht erkennbar, nur, weil es mehr Stellen gibt.
    Ein Int32 müsste btw 10 Stellen haben können, da der Werte knapp über 2 Milliarden bzw. 4 Milliarden (unsigned) liegt. Poste mal den gesamten Code und auch, wo die Exception auftritt. Und sage uns, was Du vorhast.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Zwei Dinge:
    1. Bitte eigne dir die Grundlagen an: Datentyp: Zusammenfassung / Visual Basic und Visual C#
    2. Bitte implementiere keine eigene Verschlüsselung o.ä. - da kann man mehr falsch als richtig machen, das .Net Framework bietet sehr gute Lösungen
    Mit dem Int64 geht es zwar besser, aber auch der erreicht leider schnell mal seine Grenzen :/
    Der Fehler ist bei :

    VB.NET-Quellcode

    1. ​Dim code As Integer = TextBox2.Text


    Gibt es keine Möglichkeit, dass man mit einem String rechnen kann oder mit einer Variable, die ähnlich viele Stellen akzeptiert?
    Nein. Mach mal Option Strict On und trenne die Datentypen gescheit. Ein String ist kein Integer und damit rechnet man auch nicht.

    LMS.Crafter schrieb:

    Mit dem Int64 geht es zwar besser, aber auch der erreicht leider schnell mal seine Grenzen

    Dann musst Du irgendwas falsch machen. 2^64 zu überschreiten ist in Deinem Kontext imho unmöglich. Gib' uns doch bitte genaue Meldungen und sag uns, was Du vorhast.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade : Ein 64-Bit-Integer hat, wie der Name sagt, 64 bits. Da aber eins für das Vorzeichen steht (63), geht es "nur" von -2^63 bis 2^63 - 1.
    Ist zwar immer noch lang, aber immerhin nur die Hälfte ;)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    @ThePlexian Stimmt, da hast Du recht. ;) Gilt allerdings auch nur für signed. UInt64 bzw. ulong hat eine MaxValue doppelt der MaxValue von Int64 bzw. long, was ja auch somit logisch ist, wenn es nur positiv ist. Aber gut, back to topic. :P

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    LMS.Crafter schrieb:

    ich möchte gerne ein Programm erstellen, dass z.B. jedes A in eine Zahl z.B 1 verwandelt.
    Was genau willst Du machen?
    Wird das eine Verschlüsselung?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Klar kann man dieses System schnell durchschauen, desshalb möchte ich diesen Code ja mit Rechnungen so verändern, dass Hallo nicht mehr 1601067022202220230 ist, sondern 1326598389824697 (X/35, X * 29).

    Aber ich habe glaube ich eine andere Lösung gefunden...

    VB.NET-Quellcode

    1. Dim Zahl As Int64 = NumericUpDown1.Value
    2. Dim a As String = Zahl / 35


    Vielen Dank!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LMS.Crafter“ ()

    Ignorierst Du uns eigentlich absichtlich? Das da ist keine Lösung, sondern schlichtweg falsch. Mache endlich Option Strict On und sage uns, was Du vorhast und was Du für Probleme bei Deinem Programm hast, sonst kann und wird Dir keiner helfen. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()