German Variable wird nicht akzeptiert

Discussion in 'German Forum' started by Sinan Tuzcu, Feb 13, 2019.

  1. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    Hallo,

    ich bin wieder mal am experimentieren :)

    Daten vom Gerät kommen als String.

    Code:
    Dim KomendeDaten As String
    Dim OUTPUT1 As String

    OUTPUT1 = 
    Bit.ToBinaryString(KomendeDaten)
    bekomme Fehlermeldung:
    was soll ich da machen?

    PS: auch bereits versucht, immer noch fehler
    Dim OUTPUT1 As Long
    Dim OUTPUT1 As Double
     
    Last edited: Feb 13, 2019
  2. DonManfred

    DonManfred Expert Licensed User

    Klappt nicht, wenn KomendeDaten ein Leerstring ist!
     
    GMan likes this.
  3. thetahsk

    thetahsk Active Member Licensed User

    Fehlermeldung passt nicht, bei Leerstring müsste eigentlich eine
    ..java.lang.NumberFormatException: empty String.. Exception kommen.
     
    DonManfred likes this.
  4. DonManfred

    DonManfred Expert Licensed User

    Du hat Recht,
    Dann muss die Fehlerhafte Stelle allerdings eine andere sein schätze ich. Aufgrund von fehlenden Infos können wir wohl nur raten.
     
  5. OliverA

    OliverA Well-Known Member Licensed User

    KomendeDaten muss ein INT enthalten (in String Format). Falls KomendeDaten ein Punkt hat oder irgendwas wo Java denkt KomendeDaten ist kein INT, dann, in diesem Fall, umwandelt Java KomendeDaten zu ein Doppel. Versuche:

    Code:
    Dim KomendeDaten As String
    Dim OUTPUT1 As String
    Dim myInt as Int = KomendeDaten
    OUTPUT1 = 
    Bit.ToBinaryString(myInt)
     
    Sinan Tuzcu and MarkusR like this.
  6. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    Das ist aber auch das was mein Tablet mir liefert. Mehr habe ich auch nicht in der Hand :)
     
  7. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    so hat es geklappt, aber warum kann man hier nicht casten? wie in VB.NET CSTR usw.?
     
  8. MarkusR

    MarkusR Well-Known Member Licensed User

    sowas wie Val(String) oder KomendeDaten.ToInt wäre toll oder (Int)KomendeDaten oder =Int(KomendeDaten)
    Das Val in VB6 war sehr gut, mini Funktionen die man immer braucht sollten keine Fehler werfen. Sowas wie "AX" wurde einfach als 0 zurück gegeben.
    Zudem hatte VB6 IsNumeric(..)

    Eine automatische Umwandlung ist nicht gut, wenn dann muss sowas optional sein.

    Du kannst Dir einfach ein Modul machen und eine Sub die das umwandelt.
    https://www.b4x.com/android/forum/threads/wish-val-string.7663/#content
    Ich finde es auch blöd das man über solche Dinge stolpern muß.
     
    Last edited: Feb 13, 2019
  9. OliverA

    OliverA Well-Known Member Licensed User

    Hat auch B4X (IsNumber). Nur, IsNumber can auch double sein und wuerde in diesem fall nicht helfen.
    [sarcasm]
    Ich finde es blöde das VB6 keine iOS, Android, Linux, MacOS, embedded Programme herstellen kann.
    [/sarcasm]
     
  10. Sinan Tuzcu

    Sinan Tuzcu Active Member Licensed User

    Dann müssen wir halt damit leben
     
  11. pucki

    pucki Active Member Licensed User

    Kleiner Tipp am Rande. Du solltest Daten vor Umwandlung Grundsätzlich immer auf Gültigkeit prüfen. Sonst kann es zu bösen Fehlern führen. Ich weiß jetzt nicht wie dein Code reagiert wenn "kommendeDaten" = nix ist.

    Eine mid-Anweisung in VB mit einen Leer-String führt nämlich auch zu ein Fehler. ;) Nur mal so als Beispiel.

    Gruß

    Pucki
     
    Sinan Tuzcu likes this.
  12. MarkusR

    MarkusR Well-Known Member Licensed User

    das stimmt nicht: vb6
    Code:
    Dim a$
        a$ = 
    ""
        
        Debug.Print Mid$(
    ""1100)
        Debug.Print 
    "geht"
     
    Sinan Tuzcu likes this.
  13. pucki

    pucki Active Member Licensed User

    Auf die Kleinigkeiten kommt es an ;) Ich habe MID geschrieben. OHNE $

    In VB 2010 oder höher gibt es den String-Befehl nicht mehr. Da sind auch die Befehle(genauer gesagt Funktionen) Left$, Right$, und String$ weggefallen. Ich musste mir dafür eine extra DLL schreiben.

    vb6.0 was viel genügsamer und hat vieles verziehen.

    Gruß

    Pucki
     
  14. MarkusR

    MarkusR Well-Known Member Licensed User

    OT
    Wäre das GUI ein Teil der Programmiersprache ist das gar kein Problem. Hatte MS nur kein Interesse dran.
    Siehe FireMonkey bei Delphi.
     
  15. pucki

    pucki Active Member Licensed User

    Die letzte "Fremdsystem" was man mit VB programmieren konnte, was ein Plug-in in VB6.0 für VB-CE. Hab ich auch mal mit gecodet. Für einen Pocket-PC (Das waren die Vorgänger von Handy ohne Telefonieren ;) )

    Gruß

    Pucki
     
  16. Kiffi

    Kiffi Active Member Licensed User

    Die alten VB6-Befehle Left, Right und Mid (ohne '$') befinden sich im Namespace Microsoft.VisualBasic.

    Und A = String$(40,"x") ist äquivalent zu A = New String("x"c, 40)

    Grüße ... Peter
     
    MarkusR likes this.
  17. pucki

    pucki Active Member Licensed User

    Weiß ich. Aber diese Namespace sind zu überlastet. Für 3 kleine Funktionen den gesamten Namespace einzubinden fand ich übertrieben. Also habe ich einfach eine Dll Geschrieben die eingebunden und da sind alle Funktionen (String und spezielle Ersetzungsfunktionen) und Frames (Anständige Msg-Box z.b) drin, die ich dauernd aufrufe. Das DLL-chen ist dabei nicht mal 50 k groß.

    Gruß

    Pucki
     
  18. MarkusR

    MarkusR Well-Known Member Licensed User

    OT
    Das geht auch, aber der Parameter kann dann ein Objekt sein.
    Aber allgemein waren viele MS Funktionen sehr kritisch und Fehler anfällig
    das man sich oft eine eigene Funktion drum herum schreiben mußte die nicht für alles nervt.
    Code:
    'VB6
    Dim a$
        a$ = 
    ""
     
        Debug.Print Mid(
    ""1100)
        Debug.Print 
    "geht"
     
    Last edited: Feb 14, 2019
  19. pucki

    pucki Active Member Licensed User

    ok ich hab nach geguckt wieso ich ein Fehler habe. Ich übergebe an die Funktion so gut wie nie ein echten Startwert sondern immer eine Variable (int). Und wenn die kleiner 0 ist, knallt es.

    Gruß

    Pucki
     
  20. MarkusR

    MarkusR Well-Known Member Licensed User

    Ja diese Meldung finde ich noch ok weil ein String ja nur 1-X sein kann.
    Hätte man den Wert seitens MS korrigiert auf Min-Max wäre es manipulation das hätte ich dann nicht gut heissen können.
    Allerdings wäre ja eine Debug Meldung als Warnung besser als eine Fehler Meldung die das Programm ohne Fehlerbehandlung ja abkacken läßt.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice