27. april 2002 - 22:38Der er
17 kommentarer og 2 løsninger
Object reference not set to an instance of an object.
Hej
Jeg har nedenstaaende i min .NET app
Dim imageList As Image() imageList.SetValue(img, 0)
hvor img er et instance af et Image objekt.
Det kommer dog med fejlen: Object reference not set to an instance of an object.
Jeg ved ikke helt hvorfor, men er ret sikker paa at det er noget med at jeg skal bruge new operatoren. Det kan jeg dog ikke bruge paa et Image objekt da det er erklaeret som "MustInherit". Hvad skal jeg goere for at komme udenom dette, hvis jeg IKKE vil erklaere mit array som:
Dim imageList(150) As Image
Her kan jeg jo ikke faa mere end 150 Images i arrayet.
ok odegaard, har du proevet det? Og har du overhovedet laest det jeg har skrevet(Det kan jeg dog ikke bruge paa et Image objekt da det er erklaeret som "MustInherit")? Hvis du kan faa det til at virke, er jeg imponeret...
jeg tror ikke det er din array variabel. Den fejlen på en funktion (setvalue) som sikkert har byref på den første parameter. Den fejler derfor når den forsøger at referere til et objekt der ikke er en instans - i dette tilfælde img (min teori ihvertfald).
hvis du vil have et array skal du jo fortælle den det: dim mitArray As Array på denne type findes metoden "SetValue" ellers kan man følgende: Dim mitArray() As Image du havde parenteserne på Image. På denne type (Image) findes der ikke en metode der hedder SetValue.
hmm, koerer vi en forskellig .NET app for jeg faar de samme muligheder som ved den gamle metode Dim mitArray() As Image mitArray.SetValue(obj, index) 'virker finno!
var det ikke lige det den fejlede på da ? Jeg har ikke testet det, men kun læst i SDK'en. Det er lidt svært at teste halv kode. Hvis du nu også læste efter, så kan jeg ikke se noget sted hvor du erklærer et array. Du skrev: Dim img as image() Jeg skrev: dim img() as image (bemærk parantesernes placering)
ja, men det goer ingen forskel odegaard. Det er ikke for at vaere ubehoevlet, men er du ikke soed at teste dine svar inden du poster dem. Mht. halv kode. Hvis du refererer til det jeg laver, saa kan jeg ikke se nogen halv kode. Proev dette paa din computer:
Dim img As Image img = Image.FromFile("c:\test.jpg")
Dim imageList As Image() imageList.SetValue(img, 0)
Proev derefter:
Dim img As Image img = Image.FromFile("c:\test.jpg")
Dim imageList() As Image imageList.SetValue(img, 0)
Ingen forskel... jeg vil ikke kalde det halv kode!
Og forresten... det jeg skrev med virker finno.... det var ikke fordi den kompilerede finno, men det var fordi at SetValue metoden eksisterer for det array. Undskyld misforstaaelsen.
Undskyld, men det virkede bare som dele af din kode, så derfor forsøgte jeg ikke at teste det. Jeg ville nu bare forsøge at hjælpe.
Men ok, nu har jeg testet det og må igen sige DUH. Plads nr. 0 i dit array findes jo ikke. Skriver jeg redim imagelist(0), så virker det fint. Men det skriver du jo sådan set også selv. Du kan selvfølgelig ikke referere til en arrayplads der ikke eksisterer. ---------------- dvs. Dim img As Drawing.Image img = Drawing.Image.FromFile("test.jpg")
Dim imageList() As Drawing.Image redim imagelist(0) imageList.SetValue(img, 0)
--------- Jeg undskylder mange gange for mine skud i tågen, men jeg har ikke haft tid til at forsøge selv.
Redim Preserve imageList(40) Preserve sørger for at du ikke sletter hvad der står i arrayet (medmindre du gør det mindre selvfølgelig).
Synes godt om
Ny brugerNybegynder
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.