Sinan Tuzcu Well-Known Member Licensed User Longtime User Feb 13, 2019 #1 Hallo, ich bin wieder mal am experimentieren Daten vom Gerät kommen als String. Code: Copy Dim KomendeDaten As String Dim OUTPUT1 As String OUTPUT1 = Bit.ToBinaryString(KomendeDaten) bekomme Fehlermeldung: "java.lang.NumberException: Invalid double:"" Click to expand... 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
Hallo, ich bin wieder mal am experimentieren Daten vom Gerät kommen als String. Code: Copy Dim KomendeDaten As String Dim OUTPUT1 As String OUTPUT1 = Bit.ToBinaryString(KomendeDaten) bekomme Fehlermeldung: "java.lang.NumberException: Invalid double:"" Click to expand... was soll ich da machen? PS: auch bereits versucht, immer noch fehler Dim OUTPUT1 As Long Dim OUTPUT1 As Double
DonManfred Expert Licensed User Longtime User Feb 13, 2019 #2 Klappt nicht, wenn KomendeDaten ein Leerstring ist!
thetahsk Active Member Licensed User Longtime User Feb 13, 2019 #3 Fehlermeldung passt nicht, bei Leerstring müsste eigentlich eine ..java.lang.NumberFormatException: empty String.. Exception kommen.
Fehlermeldung passt nicht, bei Leerstring müsste eigentlich eine ..java.lang.NumberFormatException: empty String.. Exception kommen.
DonManfred Expert Licensed User Longtime User Feb 13, 2019 #4 thetahsk said: ..java.lang.NumberFormatException: empty String.. Exception kommen Click to expand... 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.
thetahsk said: ..java.lang.NumberFormatException: empty String.. Exception kommen Click to expand... 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.
OliverA Expert Licensed User Longtime User Feb 13, 2019 #5 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: Copy Dim KomendeDaten As String Dim OUTPUT1 As String Dim myInt as Int = KomendeDaten OUTPUT1 = Bit.ToBinaryString(myInt)
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: Copy Dim KomendeDaten As String Dim OUTPUT1 As String Dim myInt as Int = KomendeDaten OUTPUT1 = Bit.ToBinaryString(myInt)
Sinan Tuzcu Well-Known Member Licensed User Longtime User Feb 13, 2019 #6 DonManfred said: Aufgrund von fehlenden Infos können wir wohl nur raten. Click to expand... Das ist aber auch das was mein Tablet mir liefert. Mehr habe ich auch nicht in der Hand
DonManfred said: Aufgrund von fehlenden Infos können wir wohl nur raten. Click to expand... Das ist aber auch das was mein Tablet mir liefert. Mehr habe ich auch nicht in der Hand
Sinan Tuzcu Well-Known Member Licensed User Longtime User Feb 13, 2019 #7 OliverA said: Dim KomendeDaten As String Dim OUTPUT1 As String Dim myInt as Int = KomendeDaten OUTPUT1 = Bit.ToBinaryString(myInt) Click to expand... so hat es geklappt, aber warum kann man hier nicht casten? wie in VB.NET CSTR usw.?
OliverA said: Dim KomendeDaten As String Dim OUTPUT1 As String Dim myInt as Int = KomendeDaten OUTPUT1 = Bit.ToBinaryString(myInt) Click to expand... so hat es geklappt, aber warum kann man hier nicht casten? wie in VB.NET CSTR usw.?
MarkusR Well-Known Member Licensed User Longtime User Feb 13, 2019 #8 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
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ß.
OliverA Expert Licensed User Longtime User Feb 13, 2019 #9 MarkusR said: Zudem hatte VB6 IsNumeric Click to expand... 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]
MarkusR said: Zudem hatte VB6 IsNumeric Click to expand... 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]
Sinan Tuzcu Well-Known Member Licensed User Longtime User Feb 13, 2019 #10 Dann müssen wir halt damit leben
P pucki Active Member Licensed User Longtime User Feb 14, 2019 #11 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
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
MarkusR Well-Known Member Licensed User Longtime User Feb 14, 2019 #12 pucki said: Eine mid-Anweisung in VB mit einen Leer-String führt nämlich auch zu ein Fehler. Click to expand... das stimmt nicht: vb6 Code: Copy Dim a$ a$ = "" Debug.Print Mid$("", 1, 100) Debug.Print "geht"
pucki said: Eine mid-Anweisung in VB mit einen Leer-String führt nämlich auch zu ein Fehler. Click to expand... das stimmt nicht: vb6 Code: Copy Dim a$ a$ = "" Debug.Print Mid$("", 1, 100) Debug.Print "geht"
P pucki Active Member Licensed User Longtime User Feb 14, 2019 #13 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
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
MarkusR Well-Known Member Licensed User Longtime User Feb 14, 2019 #14 OT OliverA said: [sarcasm] Ich finde es blöde das VB6 keine iOS, Android, Linux, MacOS, embedded Programme herstellen kann. [/sarcasm] Click to expand... Wäre das GUI ein Teil der Programmiersprache ist das gar kein Problem. Hatte MS nur kein Interesse dran. Siehe FireMonkey bei Delphi.
OT OliverA said: [sarcasm] Ich finde es blöde das VB6 keine iOS, Android, Linux, MacOS, embedded Programme herstellen kann. [/sarcasm] Click to expand... Wäre das GUI ein Teil der Programmiersprache ist das gar kein Problem. Hatte MS nur kein Interesse dran. Siehe FireMonkey bei Delphi.
P pucki Active Member Licensed User Longtime User Feb 14, 2019 #15 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
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
Kiffi Well-Known Member Licensed User Longtime User Feb 14, 2019 #16 pucki said: 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. Click to expand... 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
pucki said: 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. Click to expand... 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
P pucki Active Member Licensed User Longtime User Feb 14, 2019 #17 Kiffi said: Die alten VB6-Befehle Left, Right und Mid (ohne '$') befinden sich im Namespace Microsoft.VisualBasic. Click to expand... 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
Kiffi said: Die alten VB6-Befehle Left, Right und Mid (ohne '$') befinden sich im Namespace Microsoft.VisualBasic. Click to expand... 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
MarkusR Well-Known Member Licensed User Longtime User Feb 14, 2019 #18 OT pucki said: Auf die Kleinigkeiten kommt es an Ich habe MID geschrieben. OHNE $ Click to expand... 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: Copy 'VB6 Dim a$ a$ = "" Debug.Print Mid("", 1, 100) Debug.Print "geht" Last edited: Feb 14, 2019
OT pucki said: Auf die Kleinigkeiten kommt es an Ich habe MID geschrieben. OHNE $ Click to expand... 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: Copy 'VB6 Dim a$ a$ = "" Debug.Print Mid("", 1, 100) Debug.Print "geht"
P pucki Active Member Licensed User Longtime User Feb 14, 2019 #19 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
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
MarkusR Well-Known Member Licensed User Longtime User Feb 14, 2019 #20 pucki said: 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. Click to expand... 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.
pucki said: 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. Click to expand... 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.