Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  Punkt und Komma

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Punkt und Komma (6323 mal gelesen)
Mike
Mitglied
 Konstrukteur


Sehen Sie sich das Profil von Mike an!   Senden Sie eine Private Message an Mike  Schreiben Sie einen Gästebucheintrag für Mike

Beiträge: 544
Registriert: 23.06.2000

erstellt am: 06. Mrz. 2001 16:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Zusammen,
Ums gleich vorauszuschicken: Ich bin ein Anfänger, was Programmieren betrifft und schlage mich mehr schlecht als recht so durch!

Vermutlich ist mein Anliegen also gar kein Problem!

Ich habe in meiner Eingabemaske Textfelder generiert, in die der Anwender dann Zahlen eingeben soll - wenn sich die Maske öffnet liest das Programm zurerst die aktuellen Werte aus einem CADProgramm (SolidWorks) ein! Wenn diese Werte Nachkommastellen haben, dann wird das mit einem Komma dargestellt! Wenn ich die Werte aber wieder in das CAD Programm übertrage werden alle Werte nach dem Komma nicht berücksichtigt (nur Werte, bei denen das Komma mit einem Punkt eingegeben wurde!).

Meine Frage: Gibt es eine Möglichkeit Werte mit einem Punkt als Komma (wird langsam verwirrend) einzulesen bzw. umgekehrt - kann ein Komma für die Ausgabe verwendet werden?

Ich hoffe ich habe es verständlich formuliert.
Für euere Hilfe wäre ich dankbar!

Gruß
Mike

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AndreasK
Administrator
Daseinsinformatiker


Sehen Sie sich das Profil von AndreasK an!   Senden Sie eine Private Message an AndreasK  Schreiben Sie einen Gästebucheintrag für AndreasK

Beiträge: 1126
Registriert: 02.03.2000

Unter allen Umständen kann Vernunft durch Vernunft aufgeklärt werden (Alexander von Humboldt)

erstellt am: 06. Mrz. 2001 16:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mike 10 Unities + Antwort hilfreich

Hallo Mike,

ja das Problem ist wirklich ätzend!

Aber diese kleine Funktion (einfach in ein Modul einbauen) hilft:

------------------
Public Function Str2Val(ByVal txt As String) As Double
Dim i As Integer
i = InStr(txt, ",")
if (i > 0) then
txt = Left$(txt, i - 1) & "." & Mid$(txt, i + 1)
End if
Str2Val = val(txt)
End Function
-----------------------
Public Function Str2ValStr(ByVal txt As String) As String
Dim i As Integer
i = InStr(txt, ",")
if (i > 0) then
txt = Left$(txt, i - 1) & "." & Mid$(txt, i + 1)
End if
Str2ValStr = txt
End Function


Bei der Konvertierung dann immer x = Str2Val(text1.text) o.ä.

Oder Du benutzt Str2ValStr. Die macht aus "12,3" eine "12.3".

Anders geht es leider nicht. Es ist auch schrecklich, dass val() und CDbl() unterschiedliche Ergebnisse liefern. Und das Ganze Chaos vergrössert sich noch, wenn unterschiedliche Ländereinstellungen oder lokalisierte Betriebssysteme auftauchen!
Obwohl val() im Gegensatz zu CDbl() mehr richtige Ergebnisse produziert.

Beste Grüsse

Andreas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mike
Mitglied
 Konstrukteur


Sehen Sie sich das Profil von Mike an!   Senden Sie eine Private Message an Mike  Schreiben Sie einen Gästebucheintrag für Mike

Beiträge: 544
Registriert: 23.06.2000

erstellt am: 07. Mrz. 2001 10:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank Andreas!

Ich habe das gleich gestern noch ausprobiert!
Funktioniert hervorragend!

Nochmals Danke für deine rasche Hilfe!

Gruß
Mike

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel
Mitglied
 


Sehen Sie sich das Profil von Axel an!   Senden Sie eine Private Message an Axel  Schreiben Sie einen Gästebucheintrag für Axel

Beiträge: 169
Registriert: 05.09.2000

erstellt am: 08. Mrz. 2001 13:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mike 10 Unities + Antwort hilfreich

Hallo!

Seit VB6 gibt es dafür (endlich) die Funktion "Replace".
Jetzt reicht es schon
WertMitPunkt = Replace(WertMitKomma, ",", ".")
einzusetzen.

Axel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Armin B
Mitglied
Software Engineer ERP/PLM/CAD


Sehen Sie sich das Profil von Armin B an!   Senden Sie eine Private Message an Armin B  Schreiben Sie einen Gästebucheintrag für Armin B

Beiträge: 209
Registriert: 04.09.2000

erstellt am: 08. Mrz. 2001 13:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mike 10 Unities + Antwort hilfreich

Wäre natürlich geschickter, wenn man die Info, ob Punkt oder Komma aus dem System herausbekommen könnte.
Tip für Swx API Programmierer:
Es gibt seit Sw2001 ein neues Interface namens UserUnit, das genau diese Info bereitstellt.
Kann man in der API-Hilfe nachlesen.

Armin B

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Erich Z
Mitglied
 ProE und Catia System und Anwenderbetreuer


Sehen Sie sich das Profil von Erich Z an!   Senden Sie eine Private Message an Erich Z  Schreiben Sie einen Gästebucheintrag für Erich Z

Beiträge: 280
Registriert: 26.10.2000

ProE (Creo) WF4, ILink
Win
Catia V4, V5, V6

erstellt am: 30. Mrz. 2001 20:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mike 10 Unities + Antwort hilfreich

Hallo
Habe eine Anmerkung die vielleicht nicht direkt zum Thema ist aber trotzdem für einige sehr nützlich sein kann.
Es gibt im Web ein kleines Tool mit dem man das Komma vom Ziffernblock auf einen Punkt umschalten kann (kleine punkt.exe mit noch kleinerer punkt.dll, sehr praktisch umschalten im Betrieb möglich durch kleines Icon rechts in der Taskleiste)
Zumindest bei ProE ist bei Werteingaben ein Punkt erforderlich und so konnte ich unseren Anwendern die volle Funktion des Ziffernblocks geben (ohne immer den Punkt zu suchen)

Gruß Erich

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

JanMentzel
Mitglied
Student

Sehen Sie sich das Profil von JanMentzel an!   Senden Sie eine Private Message an JanMentzel  Schreiben Sie einen Gästebucheintrag für JanMentzel

Beiträge: 5
Registriert: 28.06.2001

erstellt am: 29. Jun. 2001 10:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Mike 10 Unities + Antwort hilfreich

der Witz ist nämlich:

Auf einem "deutsch" eingestellten Windoofs passiert folgendes:

CDbl("1,234") = 1.234
CDbl("1.234") = 1234.0
CDbl(",0345") -> *kaputt* !!!
CDbl(".0345") -> auch *kaputt* !!!

Hingegen auf einem z.B. "US" eingestellen WinXX verhält es sich mit den Punkten genau anders herum - das mit dem *kaputt* bleibt gleich!
:->


LÖSUNG
======
diese beiden Functions könne BEIDES:

' 8<----------------------------------------------------------------
' Variablen-Deklaration im Modul:

Public decChar as String
Public notDecChar as String

' 8<----------------------------------------------------------------

' findet das Dezimaltrennzeichen, das gerade gültig ist
' - habe 1h nach einer VB-function gesucht und nichts gefunden.
' ... aber VB ist wirklich einfach! :-(
Private Sub checkDecChar()

If 1.55 = CDbl("1.55") Then
decChar = "."
notDecChar = ","

ElseIf 1.55 = CDbl("1,55") Then
decChar = ","
notDecChar = "."

Else
MsgBox ("kann das Dezimaltrennzeichen (',' oder '.') nicht ermitteln!")

End If

'MsgBox ("hurra! Dezimaltrennzeichen gefunden: " & decChar)

End Sub

' 8<----------------------------------------------------------------

' gibt den double-Wert eines Strings zurück
Public Function str2Dbl(str As String) As Double
Dim newStr As String
newStr = Replace(str, notDecChar, decChar, , , vbTextCompare)

' Falls kein Zeichen vor dem Dezimaltrenner: eine Null vorne anhängen.
' Sonst funktioniert CDlb() nicht.
If Left(newStr, 1) = decChar Then newStr = "0" & newStr

' wenn String leer, dann wird 0.0 zurückgegeben
If newStr = "" Then newStr = 0

'returnwert
str2Dbl = CDbl(newStr)
End Function

' 8<------------------------------------------------------------------

Localistion ist wirklich schlimm - wenn MS keine Funktionen zur Verfügung stellt, um diese zu umgehen und Zahlen aus Strings zu gewinnen wie es sonst in jeder normalen Programmiersprache üblich ist.

Irgendwelche Spezialformate kann ich dann trotztdem noch benutzten - aber auch nur dann, wenn ich es wirklich will.


mfg
Jan Mentzel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz