kategoria: AMOS
[#1] Zmienne globalne w procedurze
Instrukcja do AMOS-a podaje, że aby zaoszczędzić miejsca w głównej strukturze kodu można wrzucić zmienne globalne do procedury. Za instrukcją tak:

Procedure VARIABLES
Dim ARRAY(100,100)
 Global ARRAY()
End Proc


Jednak pojawia się problem. Przeniesienie zmiennych globalnych do procedury wyświetla komunikat:
Array not dimensioned.


Oczywiście usunięcie nagłówka procedury (a tym samym wstawienie tablicy w tzw. root programu) nie wywołuje takiego komunikatu.

Mam bardzo dużo zmiennych już na ten moment i nie ukrywam, że chętnie widziałbym je w raz wywoływanej na początku procedurze, co oczyściłoby mi główną strukturę kodu i pozwoliło wygodniej się po nim poruszać.

Na moje to ewidentny błąd w instrukcji, ale może coś przeoczyłem i jest na to sposób. Pomocy szeroki uśmiech

PS A tak oto zachęca instrukcja:
With AMOS Professional, you are able to define global arrays from a procedure, even if the array is not created at root level.


Ostatnia aktualizacja: 25.11.2015 21:15:05 przez Umpal
[#2] Re: Zmienne globalne w procedurze

@Umpal, post #1

Do procedury wrzucamy parametry w składni:
Procedure DANE[A,B,C,D]
Z procedury uzyskujemy dane w składni:
End Proc[P]
Czy mniej więcej:

Procedure WYNIK[a,b]
c=a+b
end Proc[c]

zmienne które są podane za komendą Global czyli:
Global a,b,c
będą dostępne z każdego miejsca programu.Czyli komenda Gloal musi być wyrzucona ze środka procedury i umiejscowiona raczej na początku programu.
[#3] Re: Zmienne globalne w procedurze

@Stoopi, post #2

To akurat wiem i stosuję. Chodzi mi o schowanie wszystkich globalnych do procedury żeby ją można było zwinąć i zaglądać tylko w razie potrzeby lub dodawania nowych, ale wygląda na to, że tak się nie da.
[#4] Re: Zmienne globalne w procedurze

@Umpal, post #3

A spróbuj tak:

Global ARRAY(100, 100)

Nadal wywala błąd "Array not dimensioned"?

Ostatnia aktualizacja: 25.11.2015 22:30:40 przez Hexmage960
[#5] Re: Zmienne globalne w procedurze

@Umpal, post #1

Ewidentny błąd w instrukcji. Dyskowy help dokładnie temu zaprzecza.
[#6] Re: Zmienne globalne w procedurze

@Umpal, post #1

Zupełnie z innej beczki. Co to znaczy że masz dużo zmiennych ? Ile ich jest ? Może da się tą listę uprościć.
[#7] Re: Zmienne globalne w procedurze

@cholok, post #5

Popieram, bo gdzie tu sens w definiowaniu i nadawaniu statusu GLOBAL w prywatnej procedurze.
Mozna co prawda zrobic tak

Rem poczatek programu
Dim tablica(100,100)
...
..
End
  
Procedure taka_tam_proc
Global tablica()
..
end proc


Ale wiekszego sensu to tez nie ma.
[#8] Re: Zmienne globalne w procedurze

@selur, post #7

Tak, w ten sposób działa, ale jak już sam zauważyłeś to jest bez sensu.
Nic, pozostawię tak, jak jest. Jedynie wpadłem na pomysł żeby sobie tę listę zmiennych przenieść na koniec kodu i skaczę tam na początku GoSubem - znacznie mi to uporządkowało sprawę.

Do pytania powyżej... Nie, nie da się uprościć. Zmienne, to zmienne - są mi potrzebne i nie ma najmniejszych szans na ich redukcję (wciąż dochodzą nowe )

Ostatnia aktualizacja: 26.11.2015 02:50:18 przez Umpal
[#9] Re: Zmienne globalne w procedurze

@Umpal, post #8

Nie wszystkie zmienne muszą być globalne. Po za tym są jeszcze tablice.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem