Приложение с различными десятичными разделителями - Visual Basic .NET

  1. Доброе всем утро! Вопрос возник такой: как правильно написать приложение, в котором будут использоваться разные десятичные разделители, в зависимости от установленного в системе? Например. На моём компьютере установлена запятая (",") - работает без ошибок. На втором - точка и тут возникают проблемы... P.S. принудительно пробовал менять точки на запятые в коде программы в TextBox'ах, но потом отказался от этой идеи - не работает так. Или предварительно считывать, какой установлен разделитель и уже его применять в коде?


textual

Код к задаче: «Приложение с различными десятичными разделителями - Visual Basic .NET»

        Dim en As New Globalization.CultureInfo(1033)
        Dim ru As New Globalization.CultureInfo(1049)
        Dim DVal As Double
                Select Case True
                    Case Double.TryParse("Значение", Globalization.NumberStyles.AllowDecimalPoint, ru, DVal)
                    Case Double.TryParse("Значение", Globalization.NumberStyles.AllowDecimalPoint, en, DVal)
                    Case Else
                        DVal = Nothing
                End Select

СДЕЛАЙТЕ РЕПОСТ

12   голосов, оценка 3.583 из 5



Похожие ответы
  1. Можно ли с помощью бейсик создать скринсейвер?

  1. Здравствуйте! Для загрузки содержимого сайтов пользовался подобными методами:vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22         Dim oHttp As Object         Dim strURL As String           strURL = "https://www.instagram.com/"           On Error Resume Next         oHttp = CreateObject("MSXML2.XMLHTTP")         If Err.Number <> 0 Then             oHttp = CreateObject("MSXML.XMLHTTPRequest")         End If         On Error GoTo 0         If oHttp Is Nothing Then             MsgBox("Не удалось инициализировать объект MSXML!")             Exit Sub         End If           oHttp.Open("GET", strURL, False)         oHttp.Send()         TextBox1.Text = oHttp.ResponseText         Debug.Print(oHttp.ResponseText)         oHttp = Nothing         MsgBox("Данные успешно импортированы!", vbInformation)илиvb.net1 2 3 4 5 6 7 8         Dim client As New WebClient     'Создаем объект client класса WebClient         Dim url As String = "https://www.shutterstock.com/ru/"  'Создаём строку для хранения 'url         Dim stream As Stream  'Создаём объект stream класса Stream         stream = client.OpenRead(url)  'Считываем данные         Dim reader As New StreamReader(stream)  'Создаём объект reader 'класса StreamReader         Dim result As String = reader.ReadToEnd() 'Используем метод         'ReadToEnd() ' для чтения содержимого потока до конца         MsgBox(result) 'Выводим содержимое переменной resultИ эти способы прекрасно, пока не попытался считать сайт https://www.shutterstock.com/ru/ При загрузке постоянно выдает ошибку и загрузка прерывается. Почему это происходит? Авторизация тут не важно, мне необходима информация только на главной странице или на страницах поиска, но они открыты и без авторизации.

  1. Требуется нарисовать концентрические окружности уменьшающегося радиуса. Радиус каждой следующей окружности равен 9/10 радиуса предыдущей. Рисование прекращается, когда радиус становится равным минимальному значению Rmin = 1.vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Public Class Form1     Dim R As Single     Dim Rmin As Single     Dim graphics As Graphics       Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load         graphics = PictureBox1.CreateGraphics()         R = 8         Rmin = 1         Call ConcentricCricles(R, Rmin)     End Sub       Sub ConcentricCricles(ByVal R As Single, ByVal Rmin As Single)         If R > Rmin Then             graphics.DrawEllipse(Pens.Black, 0, 0, R, R)             R = 0.9 * R             Call ConcentricCricles(R, Rmin)         End If     End Sub End ClassНе могу понять как именно делать вывод, на форме ничего нет.

  1. Есть документ .dot/ Кидаю в ресурсы, как к нему обратиться ? Т есть я не могу просто так: vb.net1 Dim fileName As Object = "Квитанция на оплату.dot"А надо такvb.net1 Dim fileName As Object = "C:\Users\Ильнар\Documents\Visual Studio 2013\Projects\Кушнаренков-ТВ Приложение для персонала\Кушнаренков-ТВ Приложение для персонала\Resources\Квитанция на оплату.dot"Если в папку с программой кидаю, тоже ошибка, что файл не обнаружен. Help Me !

  1. На форме есть 2 Combobox, Текстовое поле и 2 кнопки. в Combobox - выпадающий список с названием улиц. (Программно задается). Базы никакой нет. Например: Арсенальная Арефьева Васина Васенко Вводим в текстовое поле часть названия улицы, или полное название, нажимаем на кнопку и в новый Combobox2 копируются эти названия улиц( или одно название). А при нажатии на вторую кнопку (Сброс), все возвращается в исходное положение. Заранее спасибо за помощьДобавлено через 2 часа 7 минут Решил все таки данные брать из текстового файла:vb.net1 2 3 4 5 6  Try             ComboBox1.Items.Clear()             ComboBox1.Items.AddRange(IO.File.ReadAllLines(Application.StartupPath & "\city.txt", System.Text.Encoding.Default))         Catch ex As Exception             MessageBox.Show(ex.Message.ToString())         End TryТогда наверно поиск можно будет осуществить по текстовому файлу с выводом искомой строки в Combobox. Подскажите, как это сделать? заранее спасибо

  1. Как сделать так что бы при наведении на запись(ее выделении) она показывалась полностью в выплывающем окне? То есть если в Combobox запись не полностью помещается, навел на нее, и она отобразилась полностью?

  1. vb.net1 2 3 4 5 6 7 8 9             Dim Word As Object             Word = CreateObject("Word.Application")             Word.Documents.Open("C:\Users\Ильнар\Desktop\Квитанция на оплату.doc") 'открываем документ             Word.Visible = True               With Word.Selection.Find                 .Execute(Replace("Ф!И!О", 0, 0)) 'что ищем                 Word.Selection.Text = TextBoxX4.Text & " " & TextBoxX1.Text & " " & TextBoxX2.Text 'на что меняем             End WithТак заменяет только 1 найденное слово. Как заменить все ?

  1. Как сделать что бы программа запускалась вместе с Windows?

  1. У меня есть WebBrowser, который загружает страницу и вынимает от туда текст, ну а затем работает с ним. Мне не нужно графическое оформление страницы (пользователь ее не видит) Можно ли загружать не полностью страницу, а только текст из нее? P.S. Или есть другой способ ускорить загрузку страниц в WebBrowser?

  1. Ситуация такая: есть функция рисования графиков на оси координат, есть функция подсчета интеграла (код прикреплен). У нас есть t(можно считать как x) от 0 до 2*пи с шагом 0,1. Есть w1 = 2*пи/T, T=Пи, и есть k = от 0 до 60 (это максимум). Нужно посчитать интеграл при k = 1, t раз(формула будет прикреплена). После чего нужно как - то построить график при первом k, при втором k и т.д. (там будет синусоида). Как это сделать? И в конце концов нам нужно будет выполнить одно выражение (формула тоже прикреплена). Кто может помочь? Я не могу понять как это реализовать и как потом выводить эти коэффициенты на экран и графики. Буду рад любым советам и ответам! Код программы vb.net1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 Public Class Form1     Private xmin, xmax, ymin, ymax, w, h As Integer     Private bmp As Bitmap     Private g As Graphics     Private pnAxis, pnGraphics As Pen     Private pnt As List(Of PointF), pp As PointF     Private isDraw As Boolean     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load         xmin = -7 : xmax = 7 : ymin = -2 : ymax = 2         w = PictureBox1.Width         h = PictureBox1.Height         bmp = New Bitmap(w, h, PictureBox1.CreateGraphics())         PictureBox1.Enabled = False         pnAxis = New Pen(Brushes.Blue, -1)         pnGraphics = New Pen(Brushes.Red, 2)         Button1.Enabled = False         Label2.Text = "min = " & xmin.ToString         Label3.Text = "max = " & xmax.ToString         Label5.Text = "min = " & ymin.ToString         Label4.Text = "max = " & ymax.ToString         Label1.Text = "X"         Label6.Text = "Y"         Label7.Text = "Интегралл"         Label8.Text = ""     End Sub     Private Sub CreateGraphics_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click         PictureBox1.Enabled = True         gettingStartedCanvas()         Button1.Enabled = True         Label8.Text = ""     End Sub     Private Sub GetIntegral_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         Dim kx As Double = w / 2 / xmax         Dim ky As Double = h / 2 / ymax         Dim p As PointF         For i = 0 To pnt.Count - 1             p = pnt(i)             p.X -= w / 2             p.Y -= h / 2             p.Y = -p.Y             p.X /= kx             p.Y /= ky             pnt(i) = p         Next         'вычисляем приближенно по методу трапеций         Dim sum As Double = 0.0         For i = 1 To pnt.Count - 1             sum += (pnt(i - 1).Y + pnt(i).Y) / 2 * (pnt(i).X - pnt(i - 1).X)         Next         Label8.Text = sum.ToString         Button1.Enabled = False         PictureBox1.Enabled = False     End Sub     Private Sub gettingStartedCanvas()         g = Graphics.FromImage(bmp)         g.Clear(PictureBox1.BackColor)         g.DrawLine(pnAxis, New Point(w / 2, 0), New Point(w / 2, h))         g.DrawLine(pnAxis, New Point(0, h / 2), New Point(w, h / 2))         PictureBox1.Image = bmp         g.Dispose()     End Sub     Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown         Dim x As Integer = e.Location.X         Dim y As Integer = e.Location.Y         If x <> 0 Then x = 0         pnt = New List(Of PointF)         pp = New PointF(x, y)         pnt.Add(pp)         isDraw = True         g = Graphics.FromImage(bmp)     End Sub     Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp         If Not isDraw Then Exit Sub         Dim x As Integer = e.Location.X         Dim y As Integer = e.Location.Y         If x <> w Then x = w         pnt.Add(New PointF(x, y))         g.DrawLine(pnGraphics, pp, pnt(pnt.Count - 1))         isDraw = False         g.Dispose()         PictureBox1.Image = bmp     End Sub     Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove         If isDraw Then             Dim x As Integer = e.Location.X             Dim y As Integer = e.Location.Y             If x <= pp.X Then Exit Sub             Dim p As PointF = New PointF(x, y)             g.DrawLine(pnGraphics, pp, p)             pnt.Add(p)             pp = p             PictureBox1.Image = bmp         End If     End Sub End Class