Gå til innhold

Konstanter og bruk i flere prosjekter


Anbefalte innlegg

Heisan folkens

Jeg har en liten utfordring å løse.

Fr amitt tidligere liv (Clarion) kunne jeg lage en INC file som inneholder alle konstanter jeg trenger, definert eksempelvis slik:

 

LEVEL..................ITEMIZE(0),PRE

BENIGN.................EQUATE

NOTIFY..................EQUATE

FATAL....................EQUATE

APPLICATION.........EQUATE

...........................END

 

Alternativt kunne jeg definere disse konstanter slik:

LEVEL:BENIGN.........EQUATE(0)

LEVEL:NOTIFY..........EQUATE(1)

LEVEL:FATAL............EQUATE(2)

LEVEL:APPLICATION.EQUATE(3)

 

(Dere skjønner sikkert at jeg bruker ... for å representere mellomrom og innrykk her. Klarer ikke få til innrykk etc. her, men det er uviktig.)

 

ok. Hvis jeg trengte disse kunne jeg enkelt inkludere den aktuelle filen direkte inn i applikasjonen slilk:

 

include('C:\...\...\Inkludertfil.inc')

 

Saken er at jeg på denne måten kan lage meg et fast konstant sett og benytte disse i alle programmene mine. Jeg ønsker jo å kunne gjøre dette i Visual Basic også. Noen forslag?

 

Jeg har jo sett at jeg kan skrive slik:

 

const LEVEL_BENIGN as byte = 0

const LEVEL_Notify as byte = 1

o.s.v. men dette vil jo bare være tilgjengelig i den aktuelle modulen. Jeg vil jo ikke definere disse konstantene i selve programmet, men i en fil jeg kan inkludere ett eller annet sted. for å unngå skrivefeil etc. Helst på et SCOPE så høyt som mulig.

 

Håper noen kan hjelpe meg her.

 

 

Ole

Lenke til kommentar
Videoannonse
Annonse

const LEVEL_BENIGN as byte = 0
const LEVEL_Notify as byte = 1

 

.. kan også skrives slik:

 

Public/Global const LEVEL_BENIGN as byte = 0

Public/Global const LEVEL_Notify as byte = 1

 

Om du vil har litt mer funksjonalitet, ikke hardkode alt og ha mulighet til å endre i ettertid kan du feks. implentere en INI-database. Utrolig enkelt med GetPrivateProfileInt og WritePrivateProfileString. Aadnk forklarer det her.

Lenke til kommentar
const LEVEL_BENIGN as byte = 0
const LEVEL_Notify as byte = 1

 

.. kan også skrives slik:

 

Public/Global const LEVEL_BENIGN as byte = 0

Public/Global const LEVEL_Notify as byte = 1

 

Om du vil har litt mer funksjonalitet, ikke hardkode alt og ha mulighet til å endre i ettertid kan du feks. implentere en INI-database. Utrolig enkelt med GetPrivateProfileInt og WritePrivateProfileString. Aadnk forklarer det her.

7006128[/snapback]

 

Heisan, og takk for svar

 

Å lage konstanter er ikke selve problemet. CONST gjør jobben mer en bra nok. Å bruke en INI fil er ikke det samme som å ha en konstant. Konstanter tar ikke plass i minnet og er på mange måter bare et compiler direktiv.

 

Det geniale med en include file er jo at den kan vedlikeholdes på utsiden av applikasjonene og brukes av et utall applikasjoner. Det er jo nesten en nødvendighet å benytte dette hvis man åpner en winsock og starter en komunikasjon over denne.

 

Et alternativ til en INI database er jo å lage en konstant klasse og rett og slett opprette objekter av denne der hvor de trengs, men dette er jo en mer krevende prosess for programmet (Visual Basic er vel ikek det raskeste i utgangspunktet). Dessuten blir jo dette det samme som å hente opp runtime fra en INI file.

 

 

Ole

Lenke til kommentar

Formoder dette er til VB6?

 

I så fall burde det ikke by på noe problem å legge alle konstantene i en modul og deretter referere til denne filen ved å simpelthen inkludere den i prosjektet. VB6 tar seg dernest av den relative posisjoneringen.

 

Dersom du har behov for mer avanserte funksjoner, finnes (i hvert fall i de mer utvidede utgaver av VB6) en kildekodedatabase som automatiserer denne prosessen (Source Safe). Jeg har imidlertid aldri benyttet meg av denne funksjonaliteten, så jeg kan dessverre ikke si noe om hvor godt det fungerer.

Lenke til kommentar
Formoder dette er til VB6?

 

I så fall burde det ikke by på noe problem å legge alle konstantene i en modul og deretter referere til denne filen ved å simpelthen inkludere den i prosjektet. VB6 tar seg dernest av den relative posisjoneringen.

 

Dersom du har behov for mer avanserte funksjoner, finnes (i hvert fall i de mer utvidede utgaver av VB6) en kildekodedatabase som automatiserer denne prosessen (Source Safe). Jeg har imidlertid aldri benyttet meg av denne funksjonaliteten, så jeg kan dessverre ikke si noe om hvor godt det fungerer.

7010836[/snapback]

 

Heisan, du formoder nok feil ;-)

Dette er Visual Basic 2005, men jeg vil tro det ikke spiller noen rolle for jeg kan jo legge til moduler i prosjektet på samme måte der. Så det du sier er at jeg kan lage en modul (fra skratsj) og lagre denne ett eller annet sted på disken. Dernest kan jeg inkludere denne modulen i prosjektene mine for så å ha dem tilgjengelige. Dette er helt i tråd med hva jeg ønsker. Nå må jeg innrømme at jeg faktisk har prøvd dette her, men vet ikek helt hvordan jeg skal benytte meg av disse modulene. Så vidt jeg vet (iallefall fra andre verktøy) så har en modul et egen scope. Det vil jo si at det som er definert i den aktuelle modul kunn er tilgjengelig for den modulen og ikke på tvers. Finnes det en "global" modul i appen? Et slags "top scope", for å såfall kan jo denne inkluderes der.

 

Ole

Lenke til kommentar
I VB6 skrives det slik jeg viste over, burde være noe lignende i .net.

7013113[/snapback]

 

 

Tror du har rett i det. Er vel strengt tatt ikek store forskjellen på VB enten den heter 6 eller .NET eller hva den nå heter. Er vel bare .NET tillegget som gjør 2005 spesiel - tror iallefal jeg da, men jeg kan jo ta feil.

 

Ole (Still n00b)

Lenke til kommentar

Du kan ikke inkludere kode på samme måten som det gjøres i Clarion, C, ASP.NET eller PHP.

Du må legge til filene i prosjektet, filen blir brukt som en referanse, hvis du ikke kopierer den selv.

 

Klasser, konstanter og variabler må deklareres som Public for at det andre prosjektet kan få tak i det.

 

Det er stor forskjell mellom VB6 og VB.NET forresten, to veldig forskjellige språk.

Lenke til kommentar
Du kan ikke inkludere kode på samme måten som det gjøres i Clarion, C, ASP.NET eller PHP.

Du må legge til filene i prosjektet, filen blir brukt som en referanse, hvis du ikke kopierer den selv.

 

Klasser, konstanter og variabler må deklareres som Public for at det andre prosjektet kan få tak i det.

 

Det er stor forskjell mellom VB6 og VB.NET forresten, to veldig forskjellige språk.

7020529[/snapback]

 

Fantastisk. Jeg ser jo dette nå når jeg høyreklikker på Prosjektet. Der har jeg jo hele tiden bruke "New Item" og rett og slett oversett "Use Existing Item" HMM!! Hvor blind går det an å være! Svaret lå jo der hele tiden.

 

Skjønner du kjenner til Clarion. Tør jeg spørre hvor du har brukt det og hvor lenge? Er jo genialt hvis det faktisk er folk her som vet lit om Clarion for da blir det jo mye enklere (iallefall for meg ;-) å spørre om ekvivalente løsninger. Har selv brukt Clarion siden begynnelsen av 90 tallet.

 

Ole

Lenke til kommentar
Hehe, faren min er en racer på Clarion, han var så glad i det fordi det var så enkelt, jeg har vært borti mange programmeringsspråk, Clarion er et av dem.

7048776[/snapback]

 

Hehe. Ikke umulig at jeg dermed kjenner Faren din ;-) Det er ikke så mange Clarion folk her til lands skjønner du.

 

Hva heter han? Kjenner en som har en sønn som heter Geir. Kan jo være deg det.

 

Ole

Lenke til kommentar
Faren min heter Finn

 

Ok. Ingen i min Clarion base som heter Finn. Da kjenner jeg han sikkert ikke ;-)

Du skjønner, jeg var tidligere en del av firmaet som importerte Clarion og drev også en Clarion kanal både i form av news og IRC. Vet derfor om de fleste som har Clarion her i landet.

 

Ole

Endret av HDSoftware
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...