Avatar billede eerikk Nybegynder
07. juli 2004 - 11:53 Der er 6 kommentarer og
1 løsning

SafeArrays i C# hvad gør jeg?

Jeg sidder og bruger et API, som benytter SafeArrays, og som jeg ikke kan lave om i. Mit problem er at jeg skal bruge det i C#.

Jeg har en metode som modtager et SafeArray og returnerer void. Resultatet af metodens eksekvering ses ved at det modtagede SafeArray er blevet modificeret. Når jeg giver det et array (long[]testArray), beder metoden om et System.Array. Laver jeg et sådant ved at sige System.Array testArray2 = testArray; og giver den dette kan jeg compile, men så kan jeg ikke tilgå array'ets pladser bagefter! Konverterer jeg det tilbage til et almindeligt array (as long[]), får jeg en null-ref-err, hvis jeg prøver at tilgå det - hjææælp... what to do?
Avatar billede finger Nybegynder
07. juli 2004 - 12:00 #1
kan vi evt få lov til at se koden?
Avatar billede eerikk Nybegynder
07. juli 2004 - 12:34 #2
yes - her er den:

long[]tempArrayForWidening = null;
System.Array tempArrayWidened = tempArrayForWidening as long[];
admin.Xmethod(tempArrayWidened);
long[] tempArrayNarrowed = tempArrayWidened as long[];
MessageBox.Show("Resultat af GetMatchCandidates plads 0:" + tempArrayNarrowed[0]);

Ovenstående kan compile, men giver en null-ref-err, selvom jeg VED at array'et ikke er null eller har pladser der er det...
Avatar billede arne_v Ekspert
07. juli 2004 - 19:50 #3
Jeg mener at du skal have en attribut på argumentet i definitionen.

... Xmethod([MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VT_I8)] ref arg long[]);

Bemærk at jeg har aldrig prøvet det. Det er kun udfra lidt manual læsning.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcondefaultmarshalingforarrays.asp

m.v.
Avatar billede eerikk Nybegynder
09. juli 2004 - 09:14 #4
arne v>> OK det ser godt ud - der desværre lidt tid før jeg kan teste det, men alt du skriver plejer jo at virke så hvorfor ikke begynde at skrive dine forslag som svar i stedet for kommentarer? :o)
Avatar billede arne_v Ekspert
09. juli 2004 - 09:58 #5
Der er forskel på hvad jeg selv har prøvet og jeg ved virker og så  gode
ideer udfra docs og/eller googling.

Det her forslag er gætteri. Det er der helle rikke noget galt i, når
jeg klart markerer det som sådant.

svar versus kommentar - det her er nok et af de tilfælde hvor det generer
mig at ligge et svar, når jeg kun gætter
Avatar billede eerikk Nybegynder
15. oktober 2004 - 09:29 #6
Ville gerne have haft et svar fra ArneV, men NU er der altså gået lang tid..
Avatar billede arne_v Ekspert
15. oktober 2004 - 19:42 #7
Jeg var slet ikke klar over at jeg skulle ligge et svar ...
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