Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Bascom AVR - Załadowanie zmiennej array stringiem

MES Mariusz 20 Gru 2012 12:21 1308 3
  • #1 20 Gru 2012 12:21
    MES Mariusz
    Poziom 36  

    Dla zmiennej slowo2 (string *10) przechowującej string składający się z trzech znaków potrzebuję mieć dostęp do pojedynczych znaków. Chcę do nich docierać poprzez:

    Znak1 = Chr(slowo2_array(1))
    Znak2 = Chr(slowo2_array(2))
    ...
    etc.

    Konwertuję więc zmienną slowo2 do tablicy:
    Dim Slowo2_array(10) As Byte At Slowo2 Overlay

    Mam już stworzoną tablicę (a przynajmniej coś w rodzaju tablicy).

    Czy jeśli to samo chcę mieć dla zmiennej slowo3 muszę zakładać nową tablicę (pamięciożerne) czy też mogę załadować slowo3 do istniejącej już tablicy Slowo2_array(10)?

    Gdy próbuję wykonać Slowo2_array = Slowo3 otrzymuję błąd kompilacji:
    Error 261 - Array expected.

    Można załadować tablicę stringiem, czy nie można?

    0 3
  • Pomocny post
    #2 20 Gru 2012 15:02
    Paweł Es.
    Pomocny dla użytkowników

    Tablicy nie, bo to różne typy.

    słowo2_array jest nałożone na słowo2 (string) więc musisz robić podstawienie

    słowo2 = słowo3

    albo kopiować ze słowo3 poszczególne znaki do słowo2_array

    0
  • Pomocny post
    #3 20 Gru 2012 15:04
    Mundi1970
    Poziom 24  

    Cytat:
    Czy jeśli to samo chcę mieć dla zmiennej slowo3 muszę zakładać nową tablicę (pamięciożerne) czy też mogę załadować slowo3 do istniejącej już tablicy Slowo2_array(10)?

    Nie do końca chyba rozumiesz jak działa OVERLAY, tak stworzona zmienna nie jest "pamięciożerna". Slowo2 (string *10) i Slowo2_array(10) As Byte At Slowo2 Overlay zaczynają się od tego samego adresu w pamięci ram. To działa na podobnej zasadzie jak unie w języku C, ten sam fragment pamięci możesz interpretować na wiele różnych sposobów. Jeżeli zmienisz coś w łańcuchu Słowo2 to zmieniłeś też zawartość tablicy Slowo2_array, ponieważ jest to ten sam obszar pamięci. Czyli twój problem można rozwiązać na dwa sposoby :), możesz zdefiniować nową tablice:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    jeżeli koniecznie łańcuch Slowo3 ma być w tablicy Slowo2_array, wystarczy napisać :):

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #4 15 Sty 2013 11:42
    MES Mariusz
    Poziom 36  

    Wszystko jasne, więc zamykam. Jeszcze raz dzięki za pomoc.

    0