"Bjarke Walling Petersen" <bwp@bwp.dk> wrote in message
news:9k7f65$egg$1@news.cybercity.dk...
> Niels G skrev:
> > Det er ikke Application Setup Wizarden der tildeler ClassID. Det er
> faktisk
> > VB IDE'en der gør det, med andre ord det bliver gjort før koden bliver
> > compileret.
>
> Men hvordan (hvorfra) finder VB IDE'en denne ClassID?
> Hvis den nu forhøjer et bestemt tal med én hver gang man laver en ny
> Control, skal alle programmøres start-ClassID være forskellige... jeg kan
> ikke helt forestille mig hvordan det skulle kunne løses.
Jeg ved der findes et API til at lave en GUID, men jeg ved ikke lige hvad
det hedder.
Det eneste jeg kan sige, omkring algoritmen der laver GUID, er at den er del
af
Open Software Foundation (OSF) Distributed Computing Environment (DCE)
(kilde: Microsoft Visual Basic 6.0 Component Tools Guide p337 )
Så jeg går ud fra det ikke bare er en simpel formel, ellers ville man nok
støde på
formlen noget ofter.
> > Derfor skal man være opmærksom på hvordan man indstiller 'Version
> > Compatibility'
> > i project properties.
> ... bla bla bla
> Hvor indstiller man det? - og hvad er det?
Det sidste først (jeg tager lige lidt ekstra med, så alle kan følge med
..
Et Com komponent (activeX control eller dll) har et typelib defineret ved en
guid.
Hver klasse i komponenten har et ClassID. Og hver klasse har et eller flere
interface
defineret ved en guid (til hvert interface).
Der er tre indstillinger:
- No compatibility: Alle ovennævte guid's bliver dannet på ny. Effekt:
programmer
der brugte en tidliger version af komponenten, den før den er kompileret op
mod
den ny komponent. I udvikligsmiljøet skal man skal typisk også ind og
indsætte
kontroller på ny, og/eller ind og vælge referencen til dll igen.
- Project compatibility: Her beholdes typelibID og classID, men interfaces
laves på ny.
Effekt: For kompilerede programmer den samme som ved No compatibility.
Under udviklignsmiljøet uden nogen problemer.
- Binary compatibility: Her beholdes alle guid og evt. nye tilføjes
(classIDs og interfaceIDs).
Effekt: Gamle programmer kan bruge den nye komponent uden genkompilering. I
'udviklingsmiljøet' må man ikke længre ændre udsende af eksisterende
funktioner
parametere liste, man må ej heller fjerne dem. Man må gerne ændre
funktionaliteten
i funktionerne, og man må også gerne tilføje nye.
Man indstiller det i project properties (neders i project menuen).
(og nu ikke noget med smilys, hvis du godt vidste hvad det var og hvor
- Niels G.