Zawartość pola textbox do tablicy

Zawartość pola textbox do tablicy
SZ
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
0

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)?

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
3

Istnieje. string.Split, żeby podzielić napis i Array.ConvertAll / IEnumerable<T>.Select, żeby zamienić tablicę napisów na tablicę liczb (int.Parse).

SZ
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
0

Chodzi o użycie vb.net. Mogę prosić o pomoc w rozwiązaniu tego przykładu?

Kopiuj
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
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
2

Znajdź w MSDN opis metod, które podałem. Programowanie nie polega chyba na zgadywaniu.

SZ
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
0

Rozumiem, że użycie wymienionych przez Ciebie funkcji, to jedyna metoda na rozwiązanie problemu?

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

Ale, ale IMO najprostsza, bo sprowadza się do wywołania trzech metod w jednej linijce.

SZ
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
0

Nie udało mi się wykorzystać wszystkich wspomnianych przez Ciebie funkcji...

Kopiuj
Dim wyrazya As String = txtLos.Text
        Dim tablicaa() As String = wyrazya.Split(" ")

gdzie:

Kopiuj
 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ń:

Kopiuj
Dim a As Double = tablicaa(2)
WartFunk = WartoscCiagu(m, wznx, a)

Funkcja WartoscCiagu jest typu double:

Kopiuj
Function WartoscCiaguTabela(ByVal ilosc As Integer, ByVal X As Double, ByVal a As Double) As Double
Dim s As Double
....
return s
End Function
 
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
1

No i do tego możesz użyć Array.ConvertAll.

Kopiuj
Dim tablicaDoubli() As Double = Array.ConvertAll(napis.Split(" "), Function(str As String) Double.Parse(str))
massther
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 9 lat
0

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.

SZ
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
0
Rev napisał(a)

No i do tego możesz użyć Array.ConvertAll.

Kopiuj
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:

Kopiuj
 Dim wyrazya As String = txtLos.Text
        Dim tablicaDoubli() As Double = Array.ConvertAll(wyrazya.Split(" "), Function(str As String) Double.Parse(str)) 
edytowany 2x, ostatnio: szewciu
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
1

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.

SZ
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
0

Nawet jeśli double zamieniłem na Integery zarówno w funkcjach, wywołaniach i textboxie, błąd jest ten sam.

RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
1

user image

ew. możesz to przeładowanie metody Split zamienić na napis.Split(New Char() {" "}, StringSplitOptions.RemoveEmptyEntries), będzie bardziej "wyrozumiałe".

edytowany 1x, ostatnio: Rev
KA
Czy ja dobrze widzę? Lambda w Visual Basic? :O
RE
spoko, też musiałem to na początku sprawdzić w googlach :D
SZ
  • Rejestracja:około 15 lat
  • Ostatnio:około 4 lata
0

Już znam błąd. ostatni znak tablicy był białym pustym znakiem, stąd wyjątek. Pozdrawiam i dziękuję za pomoc! :)

L3
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 10 lat
  • Postów:106
0

Polecam double.tryparse :) nie rzuca nic, a początkującemu życie ułatwia

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.