Witam! Chciałbym się poradzić, czy istnieje możliwość zapisania zawartości pola tekstowego do tablicy? Chodzi o wpisane w textbox liczby oddzielone od siebie spacjami, by każda z nich była elementem przypuśćmy, że tablicy tab(n)?
Zawartość pola textbox do tablicy
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
Istnieje. string.Split, żeby podzielić napis i Array.ConvertAll / IEnumerable<T>.Select, żeby zamienić tablicę napisów na tablicę liczb (int.Parse).
- Rejestracja: dni
- Ostatnio: dni
Chodzi o użycie vb.net. Mogę prosić o pomoc w rozwiązaniu tego przykładu?
txtLiczby.Text = "5 10 15 20 25"
Dim Liczby As String = Split(txtLiczby.Text) '??????
Dim tab(5) As Double
'Co z ConvertAll???
For Dim i As Integer = 0 To 5
tab(i) = '.....????
Next
- Rejestracja: dni
- Ostatnio: dni
Znajdź w MSDN opis metod, które podałem. Programowanie nie polega chyba na zgadywaniu.
- Rejestracja: dni
- Ostatnio: dni
Rozumiem, że użycie wymienionych przez Ciebie funkcji, to jedyna metoda na rozwiązanie problemu?
- Rejestracja: dni
- Ostatnio: dni
Ale, ale IMO najprostsza, bo sprowadza się do wywołania trzech metod w jednej linijce.
- Rejestracja: dni
- Ostatnio: dni
Nie udało mi się wykorzystać wszystkich wspomnianych przez Ciebie funkcji...
Dim wyrazya As String = txtLos.Text
Dim tablicaa() As String = wyrazya.Split(" ")
gdzie:
txtLos.Text = "5 10 15 20"
Te elementy są dobrze tablicowane w tablicaa, jednak aby móc użyć każdego z nich, muszą być typu Double. I tu rodzi się mój problem konwersji... Gdybym na przykład zechciał użyć drugiego elementu do obliczeń:
Dim a As Double = tablicaa(2)
WartFunk = WartoscCiagu(m, wznx, a)
Funkcja WartoscCiagu jest typu double:
Function WartoscCiaguTabela(ByVal ilosc As Integer, ByVal X As Double, ByVal a As Double) As Double
Dim s As Double
....
return s
End Function
- Rejestracja: dni
- Ostatnio: dni
No i do tego możesz użyć Array.ConvertAll.
Dim tablicaDoubli() As Double = Array.ConvertAll(napis.Split(" "), Function(str As String) Double.Parse(str))
- Rejestracja: dni
- Ostatnio: dni
http://msdn.microsoft.com/en-us/library/exc45z53.aspx#Y0
Za jej pomocą możesz cało tablicę, jej wszystkie elementy przekonwertować z jednego typu na inny.
- Rejestracja: dni
- Ostatnio: dni
Rev napisał(a)
No i do tego możesz użyć
Array.ConvertAll.
Dim tablicaDoubli() As Double = Array.ConvertAll(napis.Split(" "), Function(str As String) Double.Parse(str))
Input string was not in a correct format.
Wartość pola tekstowego nie jest pusta, zawiera liczby oddzielone spacjami; w czym więc może tkwić problem?
Pole tekstowe zostaje wypełnione przy wywołaniu funkcji w Subie obsługi przycisku, tablica zaś jest konwertowana we wspomnianym subie.
Mój kod dla powyższych moich linijek wygląda następująco:
Dim wyrazya As String = txtLos.Text
Dim tablicaDoubli() As Double = Array.ConvertAll(wyrazya.Split(" "), Function(str As String) Double.Parse(str))
- Rejestracja: dni
- Ostatnio: dni
Przyjrzyj się metodzie double.Parse, to ona wyrzuca wyjątek. Być może masz tam liczby z kropkami, a ustawienia kulturowe uznają przecinek. Albo jest tam jeszcze coś innego niż liczby.
- Rejestracja: dni
- Ostatnio: dni
Nawet jeśli double zamieniłem na Integery zarówno w funkcjach, wywołaniach i textboxie, błąd jest ten sam.
- Rejestracja: dni
- Ostatnio: dni

ew. możesz to przeładowanie metody Split zamienić na napis.Split(New Char() {" "}, StringSplitOptions.RemoveEmptyEntries), będzie bardziej "wyrozumiałe".
- Rejestracja: dni
- Ostatnio: dni
Już znam błąd. ostatni znak tablicy był białym pustym znakiem, stąd wyjątek. Pozdrawiam i dziękuję za pomoc! :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 106
Polecam double.tryparse :) nie rzuca nic, a początkującemu życie ułatwia