VB6: Allmän info gällande deklarering av variabler...|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
VB6: Allmän info gällande deklarering av variabler...
Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
1
December 17, 2004 - 7:44 pm
sp_Permalink sp_Print

Vad blir resultatet (eller skillnaden) om man dimmar en variabel i en sub eller längst upp?

Vad blir skillnaden mellan dessa två sätt att deklarera;

Dim x as integer
Static x as integer

Mer frågor om någon vänlig själ nappar... 😉

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
798779
December 17, 2004 - 7:54 pm
sp_Permalink sp_Print

Adam wrote: Vad blir resultatet (eller skillnaden) om man dimmar en variabel i en sub eller längst upp?

Disclaimer: Jag har aldrig programmerat Visual Basic

Här är jag inte riktigt säker, men om VB är någorlunda vettigt så är vaiabeln tillgänglig i hela källfilen om du deklarerar den högst upp.
Är den deklarerad i en procedur så är den bara tillgänglig i den proceduren.

Adam wrote:
Vad blir skillnaden mellan dessa två sätt att deklarera;

Dim x as integer
Static x as integer

Mer frågor om någon vänlig själ nappar... 😉

En variabel som är deklarerad med Static behåller sitt värde efter att proceduren avsutas. Den har alltså samma värde som vid avslutningen när proceduren körs igen.

Edit:
Om Dim på MSDN

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
798801
December 17, 2004 - 8:13 pm
sp_Permalink sp_Print

Jo det där första om att dimma längst upp var jag ganska säker på....

Men vad är skillnaden mellan Static i en sub eller högst upp?

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
798807
December 17, 2004 - 8:17 pm
sp_Permalink sp_Print

Jaha, nu tror jag att jag fattar. Att den "behåller" sitt värde betyder inte bara att den har kvar de värde den har utan också att den är "låst" och inte kan ändras i nån anna sub...

Rätt uppfattat?

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
798818
December 17, 2004 - 8:28 pm
sp_Permalink sp_Print

Deklarerar du variabeln i en sub så är den inte tillgänglig i någon annan sub. Variabler som deklareras utanför procedurer bode även de vara statiska (helt automatiskt, det är tom. så att man inte får skriva static) men tillgängliga överallt.

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
798832
December 17, 2004 - 8:49 pm
sp_Permalink sp_Print

Stort tack ren!

Jag får fundera lite, kanske återkommer! 😉

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
798895
December 17, 2004 - 9:40 pm
sp_Permalink sp_Print

Du kan ju alltid prova hur det funkar.

Jag vill återigen påpeka att det endast är (förhoppningsvis goda) gissingar, så slå mig inte om det är fel 😛

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
798903
December 17, 2004 - 9:48 pm
sp_Permalink sp_Print

Sitter och testar lite (läs: kör ett program som tillhör en hemuppg) 😉

Tror jag har fått kläm på skillnaden mellan en static och en vanlig, dock har jag problem med en helt vanlig


Private Sub Knapp_Click()
Dim c as integer
c = c + 1
Me.label.Caption = "C= " & c
End Sub

Borde inte den ökas med 1 varje gång man trycker på knappen..? Den har frusit fast på 1....

Pinsamt det här......

nv98ling
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 139
Member Since:
November 14, 2003
sp_UserOfflineSmall Offline
798952
December 17, 2004 - 10:32 pm
sp_Permalink sp_Print

Adam wrote: Sitter och testar lite (läs: kör ett program som tillhör en hemuppg) 😉

Tror jag har fått kläm på skillnaden mellan en static och en vanlig, dock har jag problem med en helt vanlig


Private Sub Knapp_Click()
Dim c as integer
c = c + 1
Me.label.Caption = "C= " & c
End Sub

Borde inte den ökas med 1 varje gång man trycker på knappen..? Den har frusit fast på 1....

Pinsamt det här......

Nej den ska stå kvar på 1

Du deklarerar den i subfunktionen och den förlorar sitt värde när funktionen avslutas.

Om du vill att den ska ökas med 1 för varje knapptryck måste du antingen deklarera den som static i subfunktioen eller lägga den som global variabel

Adam
Member
Medlem
Forum Posts: 5104
Member Since:
March 27, 2003
sp_UserOfflineSmall Offline
798977
December 17, 2004 - 11:00 pm
sp_Permalink sp_Print

Jepp, insett det efter lite testande.... Dock har jag en känsla av att jag deklarerat rätt många variabler i subbar i min långa programmeringshistora (ca 50 h).. :cy: laugh

Jaja, nu har jag iaf lärt mig att undvika det.

Tack för ditt svar nv98ling!

ren
Kommer du hit ofta?
Medlem
Forum Posts: 833
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
799125
December 18, 2004 - 1:45 am
sp_Permalink sp_Print

Jag tycker att du ska fortsätta deklarera veriabler i procedurerna. Används variablerna bara i subbarna så ska dom deklareras där.
Om VB har stöd för parametrar till procedurer och returvärden (vilket jag verkligen hoppas att det har) använd dom för att "skicka" data mellan olika delar av programmet. Antalat globala variabler blir annars snabbt stort och väldigt svåröverskådligt.

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 50
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL