WinFuture-Forum.de: Probleme Mit Kommas In Vb.net - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Probleme Mit Kommas In Vb.net


#1 _Dandy4hund_

  • Gruppe: Gäste

geschrieben 20. November 2005 - 09:30

Hi ich habe mal so einen Währungsrechner in VB.NET 2005 gemacht.
Ich habe die eingabe auf Zahlen beschränkt.
Wenn ich jetzt Kommas mache kann ich die nur mit . machen und nicht mit , und die Punkte ingnoriert der dann. Ach ich zeige einfach mal das Prob

Public Class MainForm

	Inherits System.Windows.Forms.Form
	Private Const DM As Decimal = 1.95583D  ' Deutsche Mark
	Private Const BEF As Decimal = 40.3399D ' Belgische Francs
	Private Const ATS As Decimal = 13.7603D ' Österreichische Schilling
	Private Const FRF As Decimal = 6.55957D ' Französische Francs


	Private Sub txtBetrag_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtBetrag.KeyPress
		Select Case AscW(e.KeyChar)
			Case 46, 48 To 57, 8
				' Dezimalkomma, Ziffern und Backspace zulassen
			Case Else
				MsgBox("Wie soll man etwas anderes als Zahlen Umrechen ?")
				e.Handled = True
		End Select
	End Sub

	Private Sub btnUmrechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUmrechnen.Click
		Dim Betrag As Decimal = CDec(txtBetrag.Text)
		Dim Ergebnis As Decimal

		Select Case cmbFrom.SelectedItem
			Case cmbFrom.Items.Item(1)
				' DM in Euro umrechnen
				Ergebnis = Math.Round(Betrag / DM, 2)
				lblErgebnis.Text = txtBetrag.Text & " DM sind " & _
				  "umgerechnet " & Ergebnis.ToString() & " Euro."
			Case cmbFrom.Items.Item(2)
				' Belgische Francs in Euro umrechnen
				Ergebnis = Math.Round(Betrag / BEF, 2)
				lblErgebnis.Text = txtBetrag.Text & " BEF sind " & _
				  "umgerechnet " & Ergebnis.ToString() & " Euro."
			Case cmbFrom.Items.Item(3)
				' Französische Francs in Euro umrechnen
				Ergebnis = Math.Round(Betrag / FRF, 2)
				lblErgebnis.Text = txtBetrag.Text & " FRF sind " & _
				  "umgerechnet " & Ergebnis.ToString() & " Euro."
			Case cmbFrom.Items.Item(4)
				' Österreichische Schilling in Euro umrechnen
				Ergebnis = Math.Round(Betrag / ATS, 2)
				lblErgebnis.Text = txtBetrag.Text & " ATS sind " & _
				  "umgerechnet " & Ergebnis.ToString() & " Euro."
	   
		End Select
	End Sub
End Class


Ich hoffe dadurch ist es klarer
0

Anzeige



#2 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 20. November 2005 - 19:59

dann schau dir mal den char 44 an, das ist das ","

und 46 der "."


Am einfachsten wäre du machst das irgendwie so:

if chr(44) then chr(46)
your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

#3 _Dandy4hund_

  • Gruppe: Gäste

geschrieben 21. November 2005 - 18:57

Ich habe einfach den char 46 mit 44 ausgetauscht danke !
0

#4 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.446
  • Beigetreten: 22. Juli 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 21. November 2005 - 19:00

Besser wäre es wenn der User beides eingeben kann und immer das "," kommt.
your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

#5 Mitglied ist offline   Talla 

  • Gruppe: aktive Mitglieder
  • Beiträge: 225
  • Beigetreten: 24. Februar 04
  • Reputation: 0
  • Wohnort:Esslingen

geschrieben 23. November 2005 - 14:28

Schau dir mal im Framework CultureInformation an. Das kannst du bei eingaben und Konvertierungen verwenden um kulturspezifische Einstellungen zu verwenden. Sprich auf deutschen systemen wird das Komma als Dezimaltrennzeichen benutzt und auf amerikanischen der Punkt usw., oder je nachdem wie halt das im System eingestellt ist.
Heimat ist nicht immer dort, wo wir zur Welt kamen - Heimat ist wo wir lieben. *Ehm Welk
0

#6 _Publisher_

  • Gruppe: Gäste

geschrieben 23. November 2005 - 14:36

ich habe mir in meinem Rechner so weiter geholfen:
		Dim KeyAscii As Short = Asc(e.KeyChar)
		Dim intKomma As Integer

		intKomma = InStr(1, textbox.Text, ",")
		If KeyAscii = "44" And intKomma <> "0" Then
			KeyAscii = 0
		End If
		intKomma = -1

		If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 44 And KeyAscii <> 8 Then
			KeyAscii = CShort(Nothing)
		End If

		If KeyAscii = 0 Then
			e.Handled = True
		End If

0

#7 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 23. November 2005 - 15:47

String.replace(str,',','.')
x = Integer(str)
On NumberFormatError Do Fehlerbehandlung()
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#8 _Publisher_

  • Gruppe: Gäste

geschrieben 23. November 2005 - 15:57

@rika: kannste ma nen bisschen genauer und ausführlicher werden?
odasollt das wieder nur nen klugscheiss post werden?!

Dieser Beitrag wurde von Publisher bearbeitet: 23. November 2005 - 15:58

0

#9 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 23. November 2005 - 18:52

Zuerst ersetzt du im String die Kommata durch Punkte. Dazu brauchst du keine komplizierte eigene Routine, sondern nimmst einfach String.replace(String,String,String)

Dann versuchst du, einen Integer zu erzeugen, und zwar aus dem String - wenn der String einen Integer repäsentiert, dann wird er geparst und als Integer-Wert zurückgeliefert, ansonsten schmeit er einen NumberFormatError. Im Gegensatz zu CDec() verarbeitet dieser auch die Punkte korrekt.

Wobei, mir fällt gerade auch, daß ein Decimal sicherlich besser wäre.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0