Avatar billede baitianlong Nybegynder
24. april 2005 - 03:30 Der er 10 kommentarer og
1 løsning

problemer med nullpointer

Jeg har denne metode, der skal fylde i en ListBox

public void listAftaler(DateTime dato)
{
    this.listA.Items.Clear();
    //this.listA.Items.Add("hest");
    this.listA.Items.AddRange(abog.getAftaler(dato));
}

Den giver en null pointer. Den virker med "hest", men ikke med AddRange. Her er min getAftaler funktion:

public String[] getAftaler(DateTime tid)
{
    String[] res = new string[5];
    int j = 0;
    for(int i = 0; i < aftaler.Count; i++)
    {
        if(((Aftale) aftaler[i]).Tid.ToShortDateString().Equals(tid.ToShortDateString()))
        {
            res[j] = ((Aftale)aftaler[i]).ToString;
            j++;
        }
    }
    return res;
}

Hvad er der galt, og hvordan får jeg det fikset? Det er nok noget rimelig enkelt :)
Avatar billede baitianlong Nybegynder
24. april 2005 - 03:32 #1
Jeg har paranteser på ToString() , de er bare røget i kopieringen :)
Avatar billede nielle Nybegynder
24. april 2005 - 07:49 #2
public string[] getAftaler(DateTime tid)
{
    ArrayList Temp = new ArrayList();
    foreach (Aftale aftale in aftaler)
    {
        if (aftale.Tid.ToShortDateString().Equals(tid.ToShortDateString()))
            Temp.Add(aftale.ToString());
    }

    string[] res = new string[Temp.Count];
    Temp.CopyTo(res);
    return res;
}
Avatar billede nielle Nybegynder
24. april 2005 - 07:54 #3
Du oprettede er array - res - med 5 pladser uden at være sikker på at der overhovedet var så mange aftaler i abog som overhovedet matchede. Jeg gætter på at du fik din null-exception fordi at de sidste pladser i res-arrayet var null. En anden fejl du kunne være løbet ind i var ar der var mere end 5 aftaler som machede og så havde du i stedet fået en IndexOutOfRangeException.
Avatar billede kalp Novice
24. april 2005 - 08:49 #4
tror også fejlen ligger der.
hvis ikke du vil bruge arraylist kan du jo definere størrelsen via. en parameter.


public String[] getAftaler(DateTime tid, int storrelse)
{
    String[] res = new string[storrelse];
Avatar billede arne_v Ekspert
24. april 2005 - 09:29 #5
Hvilken linie sker den null pointer exception i ?
Avatar billede nielle Nybegynder
24. april 2005 - 09:30 #6
Fordelen med at bruge ArrayList er jo at man ikke på forhånd behøver at vide hvor mange poster der ender med at være.
Avatar billede kalp Novice
24. april 2005 - 09:36 #7
nielle >> I know:)
Avatar billede baitianlong Nybegynder
24. april 2005 - 14:03 #8
Tak for indlæggene. Jeg sad og rodede med det i nat, og dette blev løsningen:

public void ListAftaler(DateTime dato) {
  this.listA.Items.Clear();
  string[] items = abog.GetAftaler(dato);
  for(int i = 0; i < 5; i++) {
      if(items[i] != null) {
        this.listA.Items.Add(items[i]);
      }
  }
}

Så var der taget højde for null :)

Jeg tror dog alligevel jeg skifter til ArrayList, så der kan være mere end fem aftaler. Derfor nielle, smid et svar - og tak for hjælpen.
Avatar billede baitianlong Nybegynder
24. april 2005 - 14:04 #9
til arne_v. Det var i linien med AddRange der var nullpointer. :)
Avatar billede nielle Nybegynder
24. april 2005 - 19:34 #10
:^)
Avatar billede nielle Nybegynder
24. april 2005 - 19:34 #11
;^|
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