Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Działania na tablicach.
Andrew




Typ: neutral
Postów: 14
Zarejestrowany: Mar 2003
Działania na tablicach.

Mam zdefinowaną tablicę 2-u elementową np:
dim a_tab(10,2) as variant
i chcę zwiększyć rozmiar do a_tab(11,2) poleceniem
ReDim Preserve a_tab(11,2)
ale to powoduje bład.
Czy są jakieś w VB polecenia ułatwiające obsługę tablic wieloelementowych np: zwiększenie rozmiaru, usunięcie dowolnego elementu, bez utraty pozostałej zawartości tablicy.

11-04-2003 11:29
Pokaż profil Andrew  Wyślij email do Andrew   
Garf




Typ: neutral
Postów: 65
Zarejestrowany: Apr 2003

Powoduje to blad dlatego, ze uzyles nieprawidlowej deklaracji. Jesli chcesz miec dynamiczna tablice, musisz zadeklarowac ja nastepujaco:
dim a_tab() as variant
Potem tylko zmieniasz jej rozmiar, z Preserve lub bez, w zaleznosci od potrzeby.
I odradzam stosowanie typu Variant - jest nieoptymalny krotko mowiac.


_____________________________________________
Garfield
Member of Blood Brothers Clan (R)

11-04-2003 17:14
Pokaż profil Garf  Wyślij email do Garf   
Andrew




Typ: neutral
Postów: 14
Zarejestrowany: Mar 2003

Twoja rada jest skuteczna gdy tablicę a_tab(10,2) powiększę do np: a_tab(10,3),
Jednak nie sprawdza się, gdzy chcę zwiększyć ją do a_tab(11,2). Pojawia się komunikat "Run-tim error '9'.", a na powiększeniu w tą stronę najbardziej mi zależy.

11-04-2003 23:56
Pokaż profil Andrew  Wyślij email do Andrew   
Garf




Typ: neutral
Postów: 65
Zarejestrowany: Apr 2003

Wiem o tym, jednak są to ograniczenia wewnętrzne VB. W MSDN pisze (po przetłumaczeniu na polski):
Jeśli używasz słowa kluczowego Preserve możesz zmienić rozmiar wyłącznie ostatniego wymiaru, ale nie możesz zmienić liczby wymiarów. (...) Jeśli twoja tablica ma dwa lub więcej wymiarów, możesz zmienić wyłącznie rozmiar ostatniego wymiaru aby zachować dane. (...) Nie możesz także zmienić dolnego zakresu wymiaru."
Podam przykład: masz tablicę X i zmieniłeś jej rozmiar
Redim X(10, 15)
Jest to tablica dwuwymiarowa. Poniższe polecenia spowodują błąd:
Redim Preserve X(15, 15)
Redim Preserve X(10, 5 to 15)
Redim Preserve X(10, 15, 15)
Możesz wyłącznie zmienić ostatni wymiar, np.
Redim Preserve X(10, 5)
Redim Preserve X(10, 50)
Zmianę rozmiaru jaką chcesz dokonać można zrobić jedynie samym Redim. Żeby nie stracić danych zadeklaruj jakąś tablicę tymczasową, do której przepiszesz dane, a potem przerzuć do tej właściwej. Innego rozwiązania nie znam. Myślę że jest to wyczerpująca odpowiedź

[Post edytowany dnia 12-04-2003 09:57 przez Garf]


_____________________________________________
Garfield
Member of Blood Brothers Clan (R)

12-04-2003 09:55
Pokaż profil Garf  Wyślij email do Garf   
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1