Avatar billede dennism Nybegynder
10. april 2004 - 21:54 Der er 14 kommentarer og
1 løsning

VB: modul

Jeg har en modul i mit program, hvori der står:

Const txtNumDec = 3

Min mening er, at "txtNumDec" skal sættes til 3. Denne variabel er altså én som skal kunne bruges i alle mine forms.

I min main-form har jeg så:
    cmdCalc.Caption = txtNumDec

Men jeg kan se, at den Caption der bliver skrevet til min commandbutton er tom. Hvorfor indeholder den ik 3?
Avatar billede biohazard_666 Nybegynder
10. april 2004 - 22:28 #1
prøv med Const txtNumDec = "3"

altså "3" i stedet for 3
Avatar billede biohazard_666 Nybegynder
10. april 2004 - 22:38 #2
Nej.. Det virker ikke... Her har du koden:

<------Module1------->
Option Explicit
Public Function txtNumDec() As Integer
txtNumDec = "3"
End Function
<------Module1------->

Public Function txtNumDec() As Integer
Her sætter vi txtNumDec til at være en 'function' og til kun at indholde tal (Integer).. Vi sætter den også til Public, som gør at vi kan hente den til alle forms..

txtNumDec = "3"
Her sætter vi værdien..

End Function
Her afslutter vi vores function

<------Form1--------->
Private Sub Form_Load()
Command1.Caption = Module1.txtNumDec
End Sub
<------Form1--------->

Module1.txtNumDec
Module1 er navnet på modulet..

Command1.Caption
Command1 er navnet på en knap

Håber det hjalp lidt på det :)

/Bio
Avatar billede dennism Nybegynder
10. april 2004 - 22:51 #3
Jeg har nu en txt (txtNumDec.Text), hvor i jeg f.eks. skriver 2.

Jeg har så denne kode:
    varsModule.txtNumDec = txtNumDec.Text

Men når jeg forsøger at sætte varsModule.txtNumDec lig 2 får jeg en fejl:
Function call on left-hand side of assignment must return Variant or object.

Hvad er der galt?
Avatar billede dennism Nybegynder
10. april 2004 - 22:52 #4
Hvor gør "Option Explicit" iøvrigt?
Avatar billede biohazard_666 Nybegynder
10. april 2004 - 23:37 #5
Jeg aner ikke hva "Option Explicit" gør :P

txtNumDec <- er det en textbox?
Avatar billede salok Nybegynder
11. april 2004 - 05:15 #6
Hej Dennism!
Magen til Type forvirring!!!...

Public Function txtNumDec() As Integer 'returnerer en Integer

Command1.Caption ' er pr. definition en string

txtNumDec = "3" ' sætte klammer omkring en Integer (no way)

Istedet for at lave en funktion der udelukkende indeholder en konstant, hvorfor så ikke bare definere konstanten ?

Public Const txtNumDec = 3

Option explicit, betyder at compileren tjekker om alle variabler er korrekt defineret før den compiler.

mvh salok
Avatar billede biohazard_666 Nybegynder
11. april 2004 - 09:43 #7
hehe.. Man kan godt se at jeg er ikke er vant til moduler....
Avatar billede dennism Nybegynder
11. april 2004 - 09:49 #8
Mit modul indeholder nu:
Public Const txtNumDec = 3

Til at redigere værdien skriver jeg:
    varsModule.txtNumDec = txtNumDec.Text

Hvor txtNumDec er en tekst-box i den form jeg arbejder med.

Men jeg får følgende fejl:
Assignment to constant not permitted

Hvad er der galt?
Avatar billede biohazard_666 Nybegynder
11. april 2004 - 12:56 #9
Den får jeg også...
Avatar billede martin_moth Mester
11. april 2004 - 13:10 #10
Hvad roder i rundt med - biohazard har erklæret txtNumDec som en funktion???? Hvad i alverden er det for noget nonsens?

Og dennism har BÅDE en konstant OG en Textbox med SAMME navn... Fyyyyyy!!!

Og dennis vil SKIFTE værdien for en konstant - men en konstant er jo netop konstant - deraf navnet - og bruges ikke til at skifte værdier. Hvis du vil skifte værdier, så brug en variabel i stedet for...

Det er en gang rod I har gang i her, for at sige det pænt...

Fortæl hellere hvad du vil opnå, så skal jeg give dig den korrekte kode.
Avatar billede biohazard_666 Nybegynder
11. april 2004 - 13:57 #11
lytter med
Avatar billede dennism Nybegynder
12. april 2004 - 21:22 #12
Jeg er med på problemet nu.
Men hvordan kan jeg så erklære NumDec som en variabel (int)?
Avatar billede Slettet bruger
12. april 2004 - 21:30 #13
Bare med en almindelig Dim og skal den bruges overalt så Global:

Dim NumDec as integer eller
Global NumDec as integer (skal så ligge i et modul så du er sikker på at alle kan få fat i det)
Avatar billede martin_moth Mester
13. april 2004 - 09:13 #14
Du kan også bruge Public i stedet for Global. Læs på msdn om viaribler og hvor de er "synlige" (Det vil jeg i meget høj grad anbefale dig at gøre, det er helt afgørende at du forstår det):

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconunderstandingscopeofvariables.asp



Og så ville JEG tildele værdier sådan (ikke i et modul, men i din kode på en form)

  varsModule.NumDec = 12

og læse værider sådan

  NyVariabel = varsModule.NumDec

For når du tager modulnavnet med, kan du lettere finde ud af hvad du har gang i ;o)
Avatar billede dennism Nybegynder
13. april 2004 - 15:41 #15
Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester