Zmienna dostepna w calym module

Makropolecenia i funkcje w języku Basic

Zmienna dostepna w calym module

Postprzez RoberttoDesperaddo » Pt sty 22, 2016 10:38 pm

Jak ustawic zmienna w taki sposob zeby moze sie bylo do nie odwolywac w kazdym subie, bez koniecznosci jej kazdorazowego deklarowania?

Z roznych zrodel o tym czytalem i wszystkie sugeruja, zeby okreslac ja poza subami, czyli (jak ja to rozumiem, moze blednie) w ten sposob:

Kod: Zaznacz cały   Rozszerz widokZwiń widok
dim var1 as string

sub test1
var1 = "test"
end sub

sub test2
print var1
end sub


Niestety nic to nie daje.


Robienie tego zas tak:

Kod: Zaznacz cały   Rozszerz widokZwiń widok
dim var1 as string
var1 = "test"

sub test1
print var1
end sub


zwraca blad.

Jak to powinno poprawnie wygladac?
OpenOffice 3.1 na Windows 7
RoberttoDesperaddo
 
Posty: 4
Dołączył(a): Pt sty 08, 2016 9:05 pm

Re: Zmienna dostepna w calym module

Postprzez Jan_J » Pt sty 22, 2016 10:43 pm

Do deklarowania zmiennych globalnych użyj dyrektywy global. Patrz https://wiki.openoffice.org/wiki/Docume ... _Variables
Przypisanie wartości do zmiennej poza podprogramem jest nielegalne. Na poziomie modułu wolno umieszczać dyrektywy, deklaracje zmiennych, deklaracje funkcji oraz procedur.
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4002
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zmienna dostepna w calym module

Postprzez RoberttoDesperaddo » Pt sty 22, 2016 11:16 pm

To co jest pod tym linkiem czytalem i po prostu w praktyce to nie dziala.

To:

Kod: Zaznacz cały   Rozszerz widokZwiń widok
global var1 as string

sub test1
var1 = "test"
end sub

sub test2
print var1
end sub


Nie daje nic.

Dawanie "dim" lub "public" zamiast "global" jest rownie bezowocne.
OpenOffice 3.1 na Windows 7
RoberttoDesperaddo
 
Posty: 4
Dołączył(a): Pt sty 08, 2016 9:05 pm

Re: Zmienna dostepna w calym module

Postprzez Jan_J » Pt sty 22, 2016 11:30 pm

Twój moduł z var1 u mnie działa: najpierw test1 nadaje wartość var1, a potem test2 z niej korzysta.
Sprawdzałem na LO 5.0 Portable pod Windows 7 Pro, ale wersja ani system nie powinny mieć znaczenia.
JJ
LO 6.2 ∙ AOO 4.1.7 ∙ Python (3.8|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 4002
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław


Powrót do Basic

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości