Получить максимальное значение из RichTextBox - PullRequest
1 голос
/ 28 марта 2020

Мне трудно получить правильное максимальное значение из расширенного текстового поля. Я пытался использовать 3 разных метода, чтобы найти максимальное значение и все работают одинаково. Для этого примера я работаю с данными GPS Speed. Поэтому я добавляю скорости 1 на 1 в поле расширенного текста. Проблема, с которой я сталкиваюсь, дает мне максимальное значение скорости 11,3 или 11,4 при определенном сценарии ios.

Например, если скорость больше 12,0, она работает нормально. Если скорость ниже 11.0, она работает нормально. Если скорость поднимается выше (или начинается выше) 11,5, но затем падает ниже 11,5, максимальный зарегистрированный номер будет одним из этих 11,3 или 11,4 чисел

Похоже, мой код считает, что 11,3 является наибольшим из чисел.

Я попробовал Richtextbox.lines.Max (), я попытался добавить данные в список, а также добавить из RTB в массив и использовать методы ниже.

   Private Sub CheckMaxSpeed()
        Dim speed
        If MaxSpeedRTB.Text = "" Then
            MaxSpeedtxt.Text = "N/A"
            MaxSpeedtxt.Text = "N/A"
            Exit Sub
        Else
            'speed = MaxSpeedRTB.Lines.Max()
            'Dim speedlist As List(Of String) = MaxSpeedRTB.Lines.ToList
            Dim myArr As String() = MaxSpeedRTB.Lines
            speed = myArr.Max()
            'speed = speedlist.Max
            speed *= 1.15078
            speed = Math.Round(speed, 1)
            If speed < 0.4 Then
                speed = "0.0"
            End If
            MaxSpeedtxt.Text = speed & " MPH"
            MaxSpeedRTB.Clear()
            MaxSpeedCom = False
        End If

1 Ответ

0 голосов
/ 28 марта 2020

Вызов Max против string - это рецепт катастрофы.

Вместо этого попробуйте проанализировать все строки как Single, затем вызовите Max против него:

Dim lines = RichTextBox1.Lines

Dim values = New List(Of Single)

For Each line As String In lines
    Dim result As Single
    Dim tryParse = Single.TryParse(line, result)
    If tryParse Then
        values.Add(result)
    End If
Next

Dim max = values.Max()

Результат:

For the following lines in RichTextBox:
11.1
11.123
Max = 11.123
...