Avatar billede Lasse Novice
27. april 2002 - 22:38 Der 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.

Takker paa forhaand
Avatar billede odegaard Nybegynder
27. april 2002 - 23:13 #1
imageList As New Image()
Husk new
Avatar billede odegaard Nybegynder
27. april 2002 - 23:14 #2
der skulle vist lige et Dim foran den
Avatar billede Lasse Novice
27. april 2002 - 23:26 #3
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...
Avatar billede odegaard Nybegynder
27. april 2002 - 23:27 #4
hmm... jeg læste det kun halvt. Hvordan erklærer du img ?
Avatar billede Lasse Novice
27. april 2002 - 23:35 #5
jeg har lavet img som foelger:

Dim img As Image
img = Image.FromFile(pathname)

Jeg kan sagtens vise billedet i en PictureBox, saa billedet er i hvert fald ok.
Avatar billede odegaard Nybegynder
27. april 2002 - 23:45 #6
jeg kan ikke sige andet end at den fejl får man, når man ikke erklæret en instans af sin variabel vha. new. Hvad med new på din erklæring af img ??
Avatar billede Lasse Novice
27. april 2002 - 23:51 #7
nej, det gaar heller ikke, da det jo er samme Objekt type.

Jeg tror jeg bliver noedt til at erklaere arrayet til at starte med, og derefter bruge Redim hvis det bliver noedvendigt.
Avatar billede odegaard Nybegynder
27. april 2002 - 23:52 #8
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).
Avatar billede odegaard Nybegynder
27. april 2002 - 23:57 #9
ah... duh! SetValue(value,index) er beregnet til array-typen. Du har jo ikke et array!
Avatar billede Lasse Novice
28. april 2002 - 00:18 #10
hvad skal det sige? Jeg troede da det var et array
Avatar billede odegaard Nybegynder
28. april 2002 - 00:25 #11
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.
Avatar billede Lasse Novice
28. april 2002 - 00:55 #12
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!
Avatar billede odegaard Nybegynder
28. april 2002 - 11:39 #13
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)
Avatar billede Lasse Novice
28. april 2002 - 21:20 #14
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.
Avatar billede odegaard Nybegynder
28. april 2002 - 21:58 #15
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.
Avatar billede Lasse Novice
28. april 2002 - 22:09 #16
Ved redim mister jeg mine data der allerede i forvejen er i arrayet... Er der en smart maade at komme udenom det paa?
Avatar billede Lasse Novice
02. maj 2002 - 23:29 #17
er du der?
Avatar billede Lasse Novice
08. maj 2002 - 01:51 #18
hmmm
Avatar billede odegaard Nybegynder
08. maj 2002 - 08:14 #19
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).
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
Kurser inden for grundlæggende programmering

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

IT-JOB

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Politiets Efterretningstjeneste

IT Sikkerhedsarkitekt i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger en Unified Communications specialist i Hvidovre

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk systemansvarlig / ingeniør inden for taktisk datalink