Avatar billede haolan Nybegynder
04. januar 2007 - 09:15 Der er 32 kommentarer og
1 løsning

Den maksimale værdi i en ArrayList

Hej eksperter..

Sidder og roder i noget C# kode for at repetere de ting jeg har lært i mit første semester på DM..

Jeg er igang med at lave et system der er indeholder nogle brugere.
Brugerne gemmer jeg i en binær fil og kalder ind i system i en ArrayList()

Jeg vil under oprettelsen af en bruger gerne have at de får tildelt et automatisk brugernummer, altså så den tjekker hvilket brugernr der er det højeste i systemet i forvejen og ligger en til. Men hvordan får jeg trukket det højeste brugernummer ud af min ArrayList()?
Avatar billede mnc Nybegynder
04. januar 2007 - 09:30 #1
er det ikke bare: (?)

int highest = 0;
foreach(User u in list)
{
  if (u.Id > highest)
    highest = u.Id;
}
Avatar billede haolan Nybegynder
04. januar 2007 - 09:44 #2
hmm der opstår 3 fejl:

Error    1    foreach statement cannot operate on variables of type 'Sportal.BrugerCollection' because 'Sportal.BrugerCollection' does not contain a public definition for 'GetEnumerator'    C:\Documents and Settings\Hans Ole Andersen\Skrivebord\Sportal\Sportal\Startup.cs    76    13    Sportal

Error    2    Operator '>' cannot be applied to operands of type 'method group' and 'int'    C:\Documents and Settings\Hans Ole Andersen\Skrivebord\Sportal\Sportal\Startup.cs    78    21    Sportal

Error    3    Cannot convert method group 'GetBrugerNr' to non-delegate type 'int'. Did you intend to invoke the method?    C:\Documents and Settings\Hans Ole Andersen\Skrivebord\Sportal\Sportal\Startup.cs    79    31    Sportal
Avatar billede mnc Nybegynder
04. januar 2007 - 09:49 #3
Hvordan ser din BrugerCollection klasse ud?
Avatar billede haolan Nybegynder
04. januar 2007 - 09:51 #4
Sådan:

    [Serializable] //SØRGER FOR AT BRUGERCOLLECTION KAN SERIALISERES
    class BrugerCollection
    {
        private ArrayList brugere;

        [NonSerialized] //SØRGER FOR AT NÆSTE LINIE IKKE MEDTAGES I SERIALISERINGEN
        private int aktuelBrugerIdx;

        public BrugerCollection()
        {
            brugere = new ArrayList();
            aktuelBrugerIdx = 0;
        }
       
        //PRE: BRUGERNR FINDES IKKE I NOGEN ANDRE BRUGERE
        //POST: BRUGEROBJEKT OPRETTET OG RETURNERET
        public Bruger OpretBruger(int brugernr)
        {
            Bruger bruger = new Bruger(brugernr);
            brugere.Add(bruger);
            return bruger;
        }

        //PRE: BRUGERNR FINDES I BRUGERE
        //POST: INDEX I BRUGERE FOR BRUGER MED BRUGERNR RETURNERET
        private int GetBrugerIdx(int brugernr)
        {
            int i;
            for (i = 0; i < brugere.Count; i++)
            {
                if (brugernr == ((Bruger)brugere[i]).GetBrugerNr())
                    break;
            }
            return i;
        }

        //PRE: BRUGERNR FINDES I BRUGERE
        //POST: BRUGER MED BRUGERNR SLETTET FRA BRUGERE
        public void SletBruger(int brugernr)
        {
            int index;
            index = GetBrugerIdx(brugernr);
            brugere.RemoveAt(index);
        }

        //PRE: BRUGERNR FINDES I BRUGERE
        //POST: BRUGER MED BRUGERNR RETURNERET
        public Bruger GetBruger(int brugernr)
        {
            int index;
            index = GetBrugerIdx(brugernr);
            return (Bruger)(brugere[index]);
        }

        //ITERATOR-METODER (GENNEMLØB AF BRUGERE)

        //POST: ITERATOR NULSTILLES (DVS. PEGER PÅ FØRSTE BRUGER)
        //  -- RETURNERER FALSE HVIS DER IKKE ER NOGEN BRUGERE, ELLER TRUE
        public bool Foerste()
        {
            aktuelBrugerIdx = 0;
            return (brugere.Count > 0);
        }

        //POST: AKTUEL VARE (DEN SOM ITERATOREN PEGER PÅ) RETURNERES
        public Bruger GetBruger()
        {
            return (Bruger)(brugere[aktuelBrugerIdx]);
        }

        //POST: PEGER PÅ NÆSTE BRUGER HVIS DER ER FLERE
        // - OG RETURNERER TRUE, ELLERS FALSE
        public bool Naeste()
        {
            aktuelBrugerIdx++;
            return (aktuelBrugerIdx < brugere.Count);
        }
    }
Avatar billede mnc Nybegynder
04. januar 2007 - 09:53 #5
Jeg ville lave en metode der returnerer alle brugere.
Avatar billede haolan Nybegynder
04. januar 2007 - 09:57 #6
Hmm kan du give et eksempel?
Avatar billede mnc Nybegynder
04. januar 2007 - 10:01 #7
Prøv vis mig hvordan du på nuværende tidspunkt kalder brugerne ind i dit system. :)
Avatar billede haolan Nybegynder
04. januar 2007 - 10:06 #8
Har en metode der gennemløber et filestream og føjer dem til en comboboks..

        public void OpdaterBrugerListe()
        {
            //INDLÆS FORNØDNE KLASSER
            BrugerCollection brugerCollection;
            Bruger bruger;

            brugerCollection = new BrugerCollection();

            //ÅBEN FIL FOR LÆSNING
            FileStream fileStream = new FileStream(FILNAVN, FileMode.Open, FileAccess.Read);

            //TILKNYT BINARY-FORMATER TIL FILESTREAM
            BinaryFormatter binFormatter = new BinaryFormatter();

            //DESERIALISÉR FILESTREAM TIL BRUGERCOLLECTIOn
            brugerCollection = (BrugerCollection)binFormatter.Deserialize(fileStream);

            //LUK FILESTREAM
            fileStream.Close();

            //GENNEMLØB ITERATOR OG INDSÆT BRUGERE I COMBOBOKSEN
            string navn;
            int brugernr;
            if (brugerCollection.Foerste())
            {
                do
                {
                    bruger = brugerCollection.GetBruger();
                    navn = bruger.GetNavn();
                    brugernr = bruger.GetBrugerNr();
                    cbVælgBruger.Items.Add(navn + " (" + brugernr.ToString() + ")");
                } while (brugerCollection.Naeste());
            }
        }

Når man skal oprette en ny bruger (den del hvor jeg skal bruge brugernummet) opretter jeg brugeren i Arrayet og skriver til en fil:

        private void btnOpretBruger_Click(object sender, EventArgs e)
        {
            //KALD DE FORNØDNE KLASSER
            BrugerCollection brugerCollection;
            Bruger bruger;
            brugerCollection = new BrugerCollection();

            //INDLÆS ATTRIBUTTER
            int brugernr;
            string navn;

            //TJEK HVILKET BRUGERNR DER ER LEDIGT
            int highest = 0;
            foreach (Bruger b in brugerCollection)
            {
                if (b.GetBrugerNr > highest)
                    highest = b.GetBrugerNr;
            }

            //KALD NAVN IND FRA BRUGEREN
            navn = txtFornavn.Text + " " + txtEfternavn.Text;

            //OPRET BRUGEROBJEKT
            bruger = brugerCollection.OpretBruger(brugernr);
            bruger.SetNavn(navn);
           
            MessageBox.Show("Bruger oprettet med ID:" + brugernr);

            //SKAB FIL FOR SKRIVNING
            FileStream filestream = new FileStream(FILNAVN, FileMode.Create, FileAccess.Write);

            //TILKNYT BINARY-FORMATER TIL FILESTREAM
            BinaryFormatter binFormatter = new BinaryFormatter();

            //SERIALISÉR BRUGERCOLLECTION TIL FILESTREAM
            binFormatter.Serialize(filestream, brugerCollection);

            //LUK FILESTREAM
            filestream.Close();

            //OPDATÉR BRUGERLISTE
            OpdaterBrugerListe();
        }

Kan dog ikke kalde brugerne ordentligt ud når den ikke vil tildele dem et seperat brugernummer...
Avatar billede mnc Nybegynder
04. januar 2007 - 10:20 #9
Hvis du, i din OpdaterBrugerListe(), også initialiserer en arraylist, og så smider dine brugere derind samtidigt, så vil du have dem på en måde hvor du lyn hurtigt (og dejlig nemt), kan gennemløbe dem med en foreach. Så skal du bare lige lave en metode i din BrugerCollection, hvor du modtager en arraylist, og smider dem ned i den arraylist du allerede har.



//INDLÆS FORNØDNE KLASSER
BrugerCollection brugerCollection;
Bruger bruger;
ArrayList brugere = new ArrayList;


og


{
  do
    {
      bruger = brugerCollection.GetBruger();
      navn = bruger.GetNavn();
      brugernr = bruger.GetBrugerNr();
      brugere.Add(bruger);
      cbVælgBruger.Items.Add(navn + " (" + brugernr.ToString() + ")");
    } while (brugerCollection.Naeste());
    // Her smider du så alle dine brugere over i din BrugerCollection :)
  }
Avatar billede haolan Nybegynder
04. januar 2007 - 10:31 #10
hmm.. er ikke helt med :S

Har smidt det ind som du siger..
Men hvordan mener du jeg skal lave min metode i BrugerCollection?

Og hvordan skal min foreach se ud?

PT ser den jo sådan ud:
            int highest = 0;
            foreach (Bruger b in brugerCollection)
            {
                if (b.GetBrugerNr > highest)
                    highest = b.GetBrugerNr;
            }
Avatar billede mnc Nybegynder
04. januar 2007 - 10:49 #11
I BrugerCollection ville jeg nok bare lige lynhurtigt lave noget

public void SaveUsers(ArrayList users)
{
  brugere = users;
}

Du har jo i forvejen en ArrayList :)
Derudover ville jeg egentlig nok også lige lave en metode der returnerer alle dine brugere, så du har noget at kunne køre igennem andre steder end kun i din BrugerCollection

public ArrayList GetAllUsers()
{
  return brugere;
}


din foreach skal se lige have en lille bitte ændring
int highest = 0;
foreach (Bruger b in brugerCollection.GetAllUsers())
{
  if (b.GetBrugerNr > highest)
    highest = b.GetBrugerNr;
}
Avatar billede haolan Nybegynder
04. januar 2007 - 10:59 #12
ahh nu forstår jeg hvor du vil hen ;)

dog stadig de to af fejlene fra før :S

Error    1    Operator '>' cannot be applied to operands of type 'method group' and 'int'    C:\Documents and Settings\Hans Ole Andersen\Skrivebord\Sportal\Sportal\Startup.cs    81    21    Sportal

Error    2    Cannot convert method group 'GetBrugerNr' to non-delegate type 'int'. Did you intend to invoke the method?    C:\Documents and Settings\Hans Ole Andersen\Skrivebord\Sportal\Sportal\Startup.cs    82    31    Sportal
Avatar billede haolan Nybegynder
04. januar 2007 - 11:01 #13
Ahh glem det :)
Der manglede bare () efter GetBrugerNr :)

Takker for en suveræn hjælp ;)
Læg svar for points
Avatar billede mnc Nybegynder
04. januar 2007 - 11:03 #14
Vis mig lige hvilke felter du har i din Bruger klasse :)
Avatar billede mnc Nybegynder
04. januar 2007 - 11:03 #15
Egenskaber! min fejl :)
Avatar billede mnc Nybegynder
04. januar 2007 - 11:05 #16
Det var så lidt :)
Avatar billede haolan Nybegynder
04. januar 2007 - 11:20 #17
Hov lige én ting..

Hvis du gider svare på det :)

Hvordan skal jeg indlæse og skrive i min FileStream til brugerCollection nu når jeg har lavet en ny arraylist.

Som det fungere nu skriver den kun den seneste oprettede bruger ind i filen og den kan slet ikke indlæse filen til brugerCollection.

Den linie den melder fejl i under indlæsning ser sådan ud:
brugerCollection = (BrugerCollection)binFormatter.Deserialize(fileStream);

og den fil jeg gemmer i har jeg forsøgt mig med at sætte sådan:
binFormatter.Serialize(filestream, brugerCollection.GetAllUsers());

Hvis det er for kompliceret må jeg lige oprette et nyt spørgsmål :)
Avatar billede mnc Nybegynder
04. januar 2007 - 11:26 #18
Kan ikke se at der skulle være den store forskel.
I det du opretter en ny bruger må du jo så bare tilføje den til din arraylist, og samtidigt tilføje brugeren i din fil.

Men jeg synes ikke at jeg forstå dit "nye spørgsmål" helt. Det kan være at det er lige et skridt over hvad jeg før har rodet med.
Avatar billede haolan Nybegynder
04. januar 2007 - 11:28 #19
ok. laver bare et nyt spørgsmål
Avatar billede haolan Nybegynder
04. januar 2007 - 11:37 #20
ahh tror ikk det er filestream den er gal med :S
Highest får tilsyneladene samme værdi uanset hvor mange brugere der er i systemet :S

Så derved bliver mit brugernr stadig det samme hele tiden...
Avatar billede mnc Nybegynder
04. januar 2007 - 11:40 #21
Hvis du ikke har haft en måde førhen, til at tjekke brugerNr, så er det muligt at alle bruger jo så har samme Nr.
Avatar billede haolan Nybegynder
04. januar 2007 - 11:42 #22
Jamen der var ingen brugere i systemet før :)
Har lavet så den ligger 1 til highest hver gang jeg opretter en bruger.. Men for hver eneste bruger jeg opretter for de brugernr 1 hvilket vil sige at highest altid er = 0..
Avatar billede mnc Nybegynder
04. januar 2007 - 11:44 #23
Ja, du mener at
bruger.BrugerNr = highest+1;
ikke sandt? ;)
Avatar billede haolan Nybegynder
04. januar 2007 - 11:48 #24
njaa altså har lavet den sådan:
            //INDLÆS ATTRIBUTTER
            int brugernr;
            string navn;

            //TJEK HVILKET BRUGERNR DER ER LEDIGT
            int highest = 0;
            foreach (Bruger b in brugerCollection.GetAllUsers())
            {
                if (b.GetBrugerNr() > highest)
                    highest = b.GetBrugerNr();
            }
            brugernr = highest + 1;

            //KALD NAVN IND FRA BRUGEREN
            navn = txtFornavn.Text + " " + txtEfternavn.Text;

            //OPRET BRUGEROBJEKT
            bruger = brugerCollection.OpretBruger(brugernr);
            bruger.SetNavn(navn);
Avatar billede haolan Nybegynder
04. januar 2007 - 11:53 #25
Tror det er nemmere hvis jeg lige poster de 3 filer som de ser ud nu :)

-----------------------------------------------
Bruger.CS
-----------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;

namespace Sportal
{
    [Serializable]
    class Bruger
    {
        //ATTRIBUTTER
        private int brugernr;
        private string navn;

        //KUNSTRUKTØR
        public Bruger(int brugernr)
        {
            this.brugernr = brugernr;
            this.navn = "";
        }

        //PROPERTIES
        public void SetNavn(string navn)
        {
            this.navn = navn;
        }

        public int GetBrugerNr() { return brugernr; }
        public string GetNavn() { return navn; }
    }
}

-----------------------------------------------
BrugerCollection.CS
-----------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Sportal
{
    [Serializable] //SØRGER FOR AT BRUGERCOLLECTION KAN SERIALISERES
    class BrugerCollection
    {
        private ArrayList brugere;

        [NonSerialized] //SØRGER FOR AT NÆSTE LINIE IKKE MEDTAGES I SERIALISERINGEN
        private int aktuelBrugerIdx;

        public BrugerCollection()
        {
            brugere = new ArrayList();
            aktuelBrugerIdx = 0;
        }

        //GEM BRUGERNE I COLLECTION
        public void GemBrugere(ArrayList users)
        {
            brugere = users;
        }

        //HENT ALLE BRUGERE TIL GENNEMLØB
        public ArrayList GetAllUsers()
        {
            return brugere;
        }

        //PRE: BRUGERNR FINDES IKKE I NOGEN ANDRE BRUGERE
        //POST: BRUGEROBJEKT OPRETTET OG RETURNERET
        public Bruger OpretBruger(int brugernr)
        {
            Bruger bruger = new Bruger(brugernr);
            brugere.Add(bruger);
            return bruger;
        }

        //PRE: BRUGERNR FINDES I BRUGERE
        //POST: INDEX I BRUGERE FOR BRUGER MED BRUGERNR RETURNERET
        private int GetBrugerIdx(int brugernr)
        {
            int i;
            for (i = 0; i < brugere.Count; i++)
            {
                if (brugernr == ((Bruger)brugere[i]).GetBrugerNr())
                    break;
            }
            return i;
        }

        //PRE: BRUGERNR FINDES I BRUGERE
        //POST: BRUGER MED BRUGERNR SLETTET FRA BRUGERE
        public void SletBruger(int brugernr)
        {
            int index;
            index = GetBrugerIdx(brugernr);
            brugere.RemoveAt(index);
        }

        //PRE: BRUGERNR FINDES I BRUGERE
        //POST: BRUGER MED BRUGERNR RETURNERET
        public Bruger GetBruger(int brugernr)
        {
            int index;
            index = GetBrugerIdx(brugernr);
            return (Bruger)(brugere[index]);
        }

        //ITERATOR-METODER (GENNEMLØB AF BRUGERE)

        //POST: ITERATOR NULSTILLES (DVS. PEGER PÅ FØRSTE BRUGER)
        //  -- RETURNERER FALSE HVIS DER IKKE ER NOGEN BRUGERE, ELLER TRUE
        public bool Foerste()
        {
            aktuelBrugerIdx = 0;
            return (brugere.Count > 0);
        }

        //POST: AKTUEL VARE (DEN SOM ITERATOREN PEGER PÅ) RETURNERES
        public Bruger GetBruger()
        {
            return (Bruger)(brugere[aktuelBrugerIdx]);
        }

        //POST: PEGER PÅ NÆSTE BRUGER HVIS DER ER FLERE
        // - OG RETURNERER TRUE, ELLERS FALSE
        public bool Naeste()
        {
            aktuelBrugerIdx++;
            return (aktuelBrugerIdx < brugere.Count);
        }
    }
}
-----------------------------------------------
StartUp.CS
-----------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Collections;

namespace Sportal
{
    public partial class Startup : Form
    {
        private const string FILNAVN = "brugere.dat";

        public Startup()
        {
            InitializeComponent();
            OpdaterBrugerListe();
        }

        public void OpdaterBrugerListe()
        {
            //INDLÆS FORNØDNE KLASSER
            BrugerCollection brugerCollection;
            Bruger bruger;
            ArrayList brugere = new ArrayList();

            brugerCollection = new BrugerCollection();

            //ÅBEN FIL FOR LÆSNING
            FileStream fileStream = new FileStream(FILNAVN, FileMode.Open, FileAccess.Read);

            //TILKNYT BINARY-FORMATER TIL FILESTREAM
            BinaryFormatter binFormatter = new BinaryFormatter();

            //DESERIALISÉR FILESTREAM TIL BRUGERCOLLECTIOn
            brugerCollection = (BrugerCollection)binFormatter.Deserialize(fileStream);

            //LUK FILESTREAM
            fileStream.Close();

            //GENNEMLØB ITERATOR OG INDSÆT BRUGERE I COMBOBOKSEN
            string navn;
            int brugernr;
            if (brugerCollection.Foerste())
            {
                do
                {
                    bruger = brugerCollection.GetBruger();
                    navn = bruger.GetNavn();
                    brugernr = bruger.GetBrugerNr();
                    brugere.Add(bruger);
                    cbVælgBruger.Items.Add(navn + " (" + brugernr.ToString() + ")");
                } while (brugerCollection.Naeste());
            }
        }

        private void btnVælgBruger_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnOpretBruger_Click(object sender, EventArgs e)
        {
            //KALD DE FORNØDNE KLASSER
            BrugerCollection brugerCollection;
            Bruger bruger;
            brugerCollection = new BrugerCollection();

            //INDLÆS ATTRIBUTTER
            int brugernr;
            string navn;

            //TJEK HVILKET BRUGERNR DER ER LEDIGT
            int highest = 0;
            foreach (Bruger b in brugerCollection.GetAllUsers())
            {
                if (b.GetBrugerNr() > highest)
                    highest = b.GetBrugerNr();
            }
            brugernr = highest + 1;

            //KALD NAVN IND FRA BRUGEREN
            navn = txtFornavn.Text + " " + txtEfternavn.Text;

            //OPRET BRUGEROBJEKT
            bruger = brugerCollection.OpretBruger(brugernr);
            bruger.SetNavn(navn);
           
            MessageBox.Show("Bruger oprettet med ID: #" + brugernr);

            //SKAB FIL FOR SKRIVNING
            FileStream filestream = new FileStream(FILNAVN, FileMode.Create, FileAccess.Write);

            //TILKNYT BINARY-FORMATER TIL FILESTREAM
            BinaryFormatter binFormatter = new BinaryFormatter();

            //SERIALISÉR BRUGERCOLLECTION TIL FILESTREAM
            binFormatter.Serialize(filestream, brugerCollection);

            //LUK FILESTREAM
            filestream.Close();

            //OPDATÉR BRUGERLISTE
            OpdaterBrugerListe();
        }
    }
}
Avatar billede mnc Nybegynder
04. januar 2007 - 11:55 #26
Det var også det jeg mente :)

Istedet for at skrive:
  brugernr = highest + 1;

kan du bare skrive:
  bruger = brugerCollection.OpretBruger(highest+1);

og så sløjfe den første
Avatar billede haolan Nybegynder
04. januar 2007 - 12:01 #27
Hmm stadig samme problem..
De får stadig tildelt brugernr 1 alle sammen
Avatar billede mnc Nybegynder
04. januar 2007 - 12:09 #28
Jeg kan se at du glemte at gemme dine brugere.

//GENNEMLØB ITERATOR OG INDSÆT BRUGERE I COMBOBOKSEN
            string navn;
            int brugernr;
            if (brugerCollection.Foerste())
            {
                do
                {
                    bruger = brugerCollection.GetBruger();
                    navn = bruger.GetNavn();
                    brugernr = bruger.GetBrugerNr();
                    brugere.Add(bruger);
                    cbVælgBruger.Items.Add(navn + " (" + brugernr.ToString() + ")");
                } while (brugerCollection.Naeste());
            }


->


//GENNEMLØB ITERATOR OG INDSÆT BRUGERE I COMBOBOKSEN
            string navn;
            int brugernr;
            if (brugerCollection.Foerste())
            {
                do
                {
                    bruger = brugerCollection.GetBruger();
                    navn = bruger.GetNavn();
                    brugernr = bruger.GetBrugerNr();
                    brugere.Add(bruger);
                    cbVælgBruger.Items.Add(navn + " (" + brugernr.ToString() + ")");
                } while (brugerCollection.Naeste());
                brugerCollection.SaveUsers(brugere);
            }
Avatar billede haolan Nybegynder
04. januar 2007 - 12:13 #29
Hov ja.. har du ret i...

Men stadig samme brugernr for nye brugere :)
Avatar billede mnc Nybegynder
04. januar 2007 - 13:21 #30
public void Main()
{
  BrugerCollection brugerCollection = new BrugerCollection();
  Bruger bruger;
  ArrayList brugere = new ArrayList();

  string navn;
  int brugernr;
  if (brugerCollection.Foerste())
  {
    do
    {
      bruger = brugerCollection.GetBruger();
      navn = bruger.GetNavn();
      brugernr = bruger.GetBrugerNr();
      brugere.Add(bruger);
      cbVælgBruger.Items.Add(navn + " (" + brugernr.ToString() + ")");
    } while (brugerCollection.Naeste());

  }
 
  foreach (Bruger b in brugere)
  {
    Console.WriteLine("{0}:{1}", bruger.GetNavn(), bruger.GetBrugerNr());
  }
}
Avatar billede mnc Nybegynder
04. januar 2007 - 13:21 #31
Hov, glemte lige teksten

Prøv at tilføje en consol applikation til dit projekt, og sætte det til at være startup projektet. Deri laver du så lidt test.
Deri prøver du så at udskrive alle dine brugere med en foreach.
Avatar billede mnc Nybegynder
04. januar 2007 - 13:30 #32
Idéen var at jeg ville se ID's på brugerne... Skulle jeg måske også lige ha' nævnt :)
Avatar billede haolan Nybegynder
04. januar 2007 - 13:58 #33
Har fundet på en anden udemærket løsning :)

Collection:
        public bool TestBrugerNr(int testnr)
        {
            int x = 0;
            foreach (Bruger b in brugere)
            {
                if (b.GetBrugerNr() == testnr)
                    x++;
            }
            if (x > 0)
                return false;
            else
                return true;
        }

StartUp:
            Random rnd = new Random(DateTime.Now.Millisecond);
            int testnr;
            testnr = rnd.Next(0,999);

            while(brugerCollection.TestBrugerNr(testnr) == false)
            {
                testnr = rnd.Next(0, 999);
            }
            brugernr = testnr;

Denne mulighed er naturligvis ikke helt optimal i mange tilfælde da den jo sætter en begrænsing på antallet af brugere der kan oprettes..
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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