|  | 		    
					
        
         
          
         
	
          | |  | Niveauer - måske OT Fra : Jens Vestergaard
 | 
 Dato :  21-04-05 15:37
 | 
 |  | 
 
            Hejsa,
 Det er måske mere "grundlæggende programmering/matematisk forståelse",  end
 det er VB - men løsningen skal laves i VB, så jeg vover det ene øje.
 Fakta:
 Jeg har en gruppe mennesker, som kan inddeles i fire kategorier: kat1-kat4
 Indenfor hver kategori kan en person have fire niveauer: niv-niv4
 For eksempel:
 A. Hansen ligger i kat3, hvor han er på niv2 og niv3 - og i kat4, hvor han
 er på niv1 og niv3
 N. Jensen ligger i kat1, hvor han er på niv4
 J. Olsen findes i samtlige kategorier på samtlige niveauer
 Problem:
 Kan jeg med en enket unik værdi udtrykke personernes placering. Læg mærke
 til, at hver enkelt person kan ligge i 1, 2 3 eller 4 kategorier og i hver
 kategori på 1, 2 3, eller 4 niveauer. Alle kombinationer er altså mulige.
 Jeg skal kunne "regne" både forlæns og baglæns.
 -- 
 mvh
 Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
 Døgnets jernbanenyheder: www.railsoft.dk/medier.asp |  |  | 
  Tomas Christiansen (21-04-2005) 
 
	
          | |  | Kommentar Fra : Tomas Christiansen
 | 
 Dato :  21-04-05 15:59
 | 
 |  | Jens Vestergaard skrev:
 > Jeg har en gruppe mennesker, som kan inddeles i fire kategorier:
 > kat1-kat4 Indenfor hver kategori kan en person have fire niveauer:
 > niv-niv4
 ....
 > Kan jeg med en enket unik værdi udtrykke personernes placering.
 
 Hvis både betydning og antal af kategorier og betydning og antal af
 niveauer aldrig ændrer sig, kan du bruge enhver datatype, som kan opdeles
 i 4*4=16 enkeltdele, som skal kunne tilgås uafhængig af hinanden.
 
 En Long vil kunne bruges, da der er 32 bit at gøre godt med. Den 1. bit
 kan svare til kat1,niv1, den 2. bit kan svare til kat1,niv2, ... den 16.
 bit kan svare til kat4,niv4. Værdien 1 kan repræsentere medlemskab og 0
 kan repræsentere ikke-medlemskab. Et check på medlemskab af kat3,niv2 kan
 se således ud: If AktueltMedlemskab And Kat3Niv2 <> 0 Then
 
 En String vil ligeledes kunne bruges. Du kan lade faste pladser have en
 bestemt betydning (som i en Long), eller du kan vælge at optræder et A ét
 eller andet sted, betyder det at personen er medlem af kat1,niv1,
 optræder et B ét eller andet sted, betyder det at personen er medlem af
 kat1,niv2 osv. Et check på medlemskab af kat3,niv2 kan se således ud:
 If AktueltMedlemskab Like Kat3Niv2 Then
 
 Den første løsning har den fordel at den fylder meget lidt (det vil endda
 kunne pakkes ned i en Integer, som fylder 16 bit), men smule plads er
 normalt ikke det store problem i vore dage. Den anden løsning har den
 fordel at den lettere kan udvides flere kategorier/niveauer eller noget
 helt andet (du har 256 muligheder mod 32 i den første løsning).
 
 > Jeg skal kunne "regne" både forlæns og baglæns.
 
 Uddyb - evt. kom med eksempler på hvad du skal kunne regne på. Mener du
 tildele/fratage "medlemskab"?
 
 -------
 Tomas
 
 
 |  |  | 
  Jens Vestergaard (21-04-2005) 
 
	
          | |  | Kommentar Fra : Jens Vestergaard
 | 
 Dato :  21-04-05 19:39
 | 
 |  | 
 
            I news:Xns963FACAF57410tomascdenmark@212.242.40.170,
  skrev Tomas Christiansen <toc-01-nospam-removethisword@blikroer.dk>:
 > Jens Vestergaard skrev:
 >> Jeg har en gruppe mennesker, som kan inddeles i fire kategorier:
 >> kat1-kat4 Indenfor hver kategori kan en person have fire niveauer:
 >> niv-niv4
 > ...
 >> Kan jeg med en enket unik værdi udtrykke personernes placering.
 >
 > Hvis både betydning og antal af kategorier og betydning og antal af
 > niveauer aldrig ændrer sig, kan du bruge enhver datatype, som kan
 > opdeles i 4*4=16 enkeltdele, som skal kunne tilgås uafhængig af
 > hinanden.
 >
 Først tak for forslag..   >> Jeg skal kunne "regne" både forlæns og baglæns.
 >
 > Uddyb - evt. kom med eksempler på hvad du skal kunne regne på. Mener
 > du tildele/fratage "medlemskab"?
 Det jeg gerne vil kunne - nemmest muligt - er at lave en kode, der ...
 1) "den ene vej" omsætter f.eks. 4x4 afkrydsningsfelter til en værdi og
 2) "den anden vej" omsætter værdien til "checked"/"unchecked" i 4x4
 afkrydsningsfelter
 Altså
 Kat 1: niv1(flueben), niv2(flueben), niv3, niv4
 Kat 2: niv1, niv2, niv3, niv4(flueben)
 .... ...
 Men hvis jeg bruger en streng, kunne værdien naturligvis bare sammensættes
 som:
 Dim c as CheckBox
 Dim sValue as string
 For Each c in chkNiveauer
  sValue = sValue & c.Value
 Next
 Og den anden vej..:
 For x= 1 to Len(cValue)
    chkNiveauer(x).Value = Mid(sValue, x, 1)
 Next
 Nu tænkte jeg lige højt...
 Men det vil vel egentlig fungere udmærket...
 Tak for inspirationen!     Et lille skub, og det hele ser ganske enkelt ud,
 når det kommer til stykket.
 -- 
 mvh
 Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
 Døgnets jernbanenyheder: www.railsoft.dk/medier.asp |  |  | 
  Agner (21-04-2005) 
 
	
          | |  | Kommentar Fra : Agner
 | 
 Dato :  21-04-05 20:45
 | 
 |  | 
 "Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse 
 news:4267ba1a$0$172$edfadb0f@dtext02.news.tele.dk...
 > Hejsa,
 > Det er måske mere "grundlæggende programmering/matematisk forståelse", 
 > end
 > det er VB - men løsningen skal laves i VB, så jeg vover det ene øje.
 >
 > Fakta:
 > Jeg har en gruppe mennesker, som kan inddeles i fire kategorier: kat1-kat4
 > Indenfor hver kategori kan en person have fire niveauer: niv-niv4
 >
 > For eksempel:
 > A. Hansen ligger i kat3, hvor han er på niv2 og niv3 - og i kat4, hvor han
 > er på niv1 og niv3
 > N. Jensen ligger i kat1, hvor han er på niv4
 > J. Olsen findes i samtlige kategorier på samtlige niveauer
 >
 > Problem:
 > Kan jeg med en enket unik værdi udtrykke personernes placering. Læg mærke
 > til, at hver enkelt person kan ligge i 1, 2 3 eller 4 kategorier og i hver
 > kategori på 1, 2 3, eller 4 niveauer. Alle kombinationer er altså mulige.
 >
 > Jeg skal kunne "regne" både forlæns og baglæns.
 >
 >
 > -- 
 > mvh
 > Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
 > Døgnets jernbanenyheder: www.railsoft.dk/medier.asp Du kan udtryk og code det i hexNotation. Der skal 5 hexCifre til:
 For eksempel A. Hansen:  &H5600B&
 &H5600B& = 0101|0110|0000|0000|1100
 Start fra højre:  her er 1100 == kat4,kat3,kat2,kat1
 idet A.Hansen ligger i kat4 og kat3.
 De næste 4 hexCifre står for niveau'erne, sådan, at det første 0000 tilhører 
 kat1,
 det næste 0000 tilhører kat2, det næste 0110 tilhører kat3 og det sidste 
 0101
 tilhører kat4.
 Hextallet kan ved hjælp af VB omsættes til en long heltals-værdi. Og kan
 altid omsættes tilbage til det oprindelige hextal - &H5600B&
 A. Hansen får altså ID-nummeret &H5600B&
 Hvis du har A.Hansen og adresse i en Listbox kan du jo holde ID-nummeret i
 Listboxens ItemValue.
 agner
            
             |  |  | 
  Agner (22-04-2005) 
 
	
          | |  | Kommentar Fra : Agner
 | 
 Dato :  22-04-05 12:27
 | 
 |  | Korrektion:
 &H5600B& = 0101|0110|0000|0000|1100
 skal være:
 &H5600C& = 0101|0110|0000|0000|1100
 
 
 
 
 |  |  | 
  Jens Vestergaard (22-04-2005) 
 
	
          | |  | Kommentar Fra : Jens Vestergaard
 | 
 Dato :  22-04-05 14:02
 | 
 |  | 
 
            I news:426802b3$0$692$edfadb0f@dread16.news.tele.dk,
  skrev Agner <agner@ingenmail.com>:
 > "Jens Vestergaard" <j@railsoft.dk> skrev i en meddelelse
 > news:4267ba1a$0$172$edfadb0f@dtext02.news.tele.dk...
 >> Fakta:
 >> Jeg har en gruppe mennesker, som kan inddeles i fire kategorier:
 >> kat1-kat4 Indenfor hver kategori kan en person have fire niveauer:
 >> niv-niv4
 >>
 >> For eksempel:
 [snip]
 >
 > Du kan udtryk og code det i hexNotation. Der skal 5 hexCifre til:
 > For eksempel A. Hansen:  &H5600B&
 > &H5600B& = 0101|0110|0000|0000|1100
 > Start fra højre:  her er 1100 == kat4,kat3,kat2,kat1
 > idet A.Hansen ligger i kat4 og kat3.
 > De næste 4 hexCifre står for niveau'erne, sådan, at det første 0000
 > tilhører kat1, det næste 0000 tilhører kat2, det næste 0110 tilhører kat3
 og det
 > sidste 0101 tilhører kat4.
 Jep, det var også lidt det, jeg nåede frem til - med Tomas' hjælp - blot vil
 jeg nøjes med 4 'cifre', idet
 hver 'ciffer' (gruppe, hvis det er en streng) er god nok til at repræsentere
 en kategori,
 f.eks. 1000 0100 0000 0111
 niv1 i kat1 - niv2 i kat2 - intet i kat3 - niv2,3,4 i kat4
 Men tak for input anyway    -- 
 mvh
 Jens Vestergaard (mailadr i dette indlæg er ikke gyldig!)
 Døgnets jernbanenyheder: www.railsoft.dk/medier.asp |  |  | 
  Agner (21-04-2005) 
 
	
          | |  | Kommentar Fra : Agner
 | 
 Dato :  21-04-05 21:12
 | 
 |  | ID-nummer for kategori og niveau
 - Ikke for personen selvfølgelig.
 Skal du ha personen med i nummeret skal der mere til.
 
 
 
 
 |  |  | 
 |  |