Avatar billede Lasse Novice
20. juni 2007 - 00:45 Der er 5 kommentarer og
1 løsning

Hvilken array type dette

Via et kald til en COM server faar jeg et COM objekt tilbage af typen System.Int32[*]. Hvad har jeg med at goere her?
Avatar billede kalp Novice
20. juni 2007 - 07:51 #1
muligvis et int array af ukendt størrelse
Avatar billede innercitydk Nybegynder
20. juni 2007 - 08:11 #2
Lyder mystisk at det skulle være ukendt størrelse. Kan ikke helt hvordan de  lade sig gøre. Er de data du skal have fat i rent faktisk i arrayet?

Prøv eventuelt følgende.

1) int[] aTmp = RETUROBJEKTET FRA COM SERVEREN;
Test så hvor mange elementer osv der er i arrayet. aTmp.Length(); Kør eventuelt en foreach løkke der udskriver værdierne.

foreach(int x in aTmp)
{
    Console.WriteLine(x.ToString());
}


vh Nicki
Avatar billede kalp Novice
20. juni 2007 - 13:41 #3
Hvad jeg mener med "ukendt størrelse"

er det samme som dette..

public string[] GivMigEtArray()
{
....lav et array og return det.
}

og så siger vi det er dig, som kalder den metode... du vil ikke kunne vide hvor stort det array er ud fra metode navn og retur type:)

men ja det kan jo være den stjerne i COM betyder noget helt andet.. kender ikke til COM
Avatar billede Lasse Novice
20. juni 2007 - 16:40 #4
innercitydk, kalp>>
COM kaldet returnerer et objekt af typen System.Object. Den underliggende type er derimod System.Int32
  • . Proever jeg:

  • int[] arr = (int[])objekt;

    faar jeg en fejl:

    Can't cast System.Int32
  • to System.Int32[]

  • Jeg har reflektet lidt paa typen:

    objekt.GetType().IsArray // returnerer true
    objekt.GetType().GetArrayRank() // returnerer 1
    objekt.GetType().GetElementType() // returnerer System.Int32

    Hvis jeg viser vaerdien i et watch vindue i Visual Studio er vaerdien:

    {Dimensions:[1..6]}

    Den normale tekst vaerdi for et array i et watch vindue er:

    {Dimensions:[9]}

    Saa der er et eller andet mystisk...
    Avatar billede kalp Novice
    20. juni 2007 - 22:44 #5
    jeg kan ikke se hvad det er for en type må jeg indrømme... når jeg ser tegnet * tænker jeg også på pointers, men giver ikke rigtig mening i denne sammenhæng.

    har du prøvet at type caste til følgende typer array?

    Int32[] array = (Int32[])objekt;
    Int32[,] array = (Int32[,])objekt;
    Int32[,,] array = (Int32[,,])objekt;
    Int32[,,,] array = (Int32[,,,])objekt;
    Avatar billede kalp Novice
    21. juni 2007 - 10:19 #6
    System.IntPtr[] array = (System.IntPtr[])ditobjekt;

    yeps.. det er en pointer som jeg fornemmede.. du skal ud i noget alá den der.
    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