[VB6,VBA,VBS] Jak odczytać wartości rzeczywiste wpisane do Tablicy?


(sexy69bis) #1
Option Base 1

ReDim Tablica$(2, 10)

Tablica$(1, 1) = "Adam"
Tablica$(1, 2) = "Rafał"
Tablica$(1, 3) = "Tomasz"

Tablica$(2, 1) = "Anna"
Tablica$(2, 2) = "Rita"

wartość_w_1 = UBound(Tablica, 1) 'wartość max zadeklarowana -> 2
wartość_w_2 = UBound(Tablica, 2) 'wartość max zadeklarowana -> 10

Jak odczytać wartości rzeczywiste (3 i 2) bez pomocy (For, Next) wpisane do Tablicy?

 


(ttomas) #2

Chodzi Ci o wartości Rafał i Tomasz? 

jeśli tak to sprawdź: 


(sexy69bis) #3

Tak będzie jaśniej na najprostszej tablicy.

ReDim Tablica$(10)

Tablica$(1) = “Adam”


(ttomas) #4

Dla powyższego przykładu to poniższe działa ale prawdopodobnie to głupie rozwiązanie :P 

Trzeba do stringów dodać marker np. spację na końcu :slight_smile:

ReDim Tablica$(10)

Tablica$(1) = "Adam "


(floyd) #5

Nie ma takiej funkcji która by zwracała te wartości o które ci chodzi.

Możliwe rozwiązania to:

1)pętla for…next czy do…loop i inne, ale napisałeś, że ma być bez pętli.

  1. Deklarujemy zmienne np. o nazwach max1, max2

Wartości tablic jakoś tam umieszczamy. Jeżeli te wartości zostały określone już na etapie tworzenia programu, to po prostu mamy jak na widelcu: max1=5: max2=2 i zawsze można je odczytać

jeżeli już w trakcie działania programu zaprogramowaliśmy tak, że można tworzyć dodatkowe wartości tablic, to po każdej dodanej wartości zwiększamy wartość max1=max1+1 albo max2=max2+1 itd.

Liczby max1 i max2 będą oznaczały aktualną liczbę elementów tablicy.

Oczywiście zmienne max1 i max2 deklarujemy nie wewnątrz procedury gdzie jest wyznaczana ich wartość, ale gdzieś na zewnątrz tej procedury jako np. zmienne globalne.

Gdybyśmy też zaprogramowali możliwość usuwania elementów tablicy, to po każdym usunięciu zmieniamy wartości max1, max2

max1=max1-1 lub max2=max2-1: Oczywiście liczby max1 i max2 po kazdej zmianie muszą być zapisane, a przy uruchamianiu programu odczytywanie.

 


(ttomas) #6

Zgadza się, przy dynamicznych tablicach można definiować rozmiar tablicy podczas dodawania / usuwania rekordów zawsze będzie to w zmiennej. 

Lecz w tym przypadku z tablicą statyczną działa Filtrowanie do nowej tablicy po markerze w stringu :slight_smile:


(sexy69bis) #7

W chwili obecnej posługuję się takim kodem:

ReDim Tablica$(2, 10)

GórnyZakresIndeksów = UBound(Tablica, 1)

Tablica$(1, 1) = “Adam”


(floyd) #8

(ttomas) #9

Sądzę że jest podobne rozwiązanie dla tablicy dwuwymiarowej, tylko trzeba sprawdzić i przetestować. Jak będzie chwila to dopiszę.


(floyd) #10

Na upartego to można jeszcze wprowadzić drugą tablicę jednowymiarową której elementami będą elementy tablicy dwuwymiarowej, ale to taka sztuka dla sztuki i niezbyt elegancka.

ReDim Tablica$(2, 10): ReDim tablica2$(10)

Tablica$(2, 1) = "Adam ": tablica2$(1) = Tablica$(2, 1)


(sexy69bis) #11

To musiałoby wyglądać tak:

ReDim Tablica$(2, 10): ReDim tablica1$(10): ReDim tablica2$(10)

Tablica$(1, 1) = "Adam ": tablica1$(1) = Tablica$(1, 1)