Avatar billede Syska Mester
24. februar 2005 - 12:53 Der er 9 kommentarer og
1 løsning

tælle op på givent array hvis den findes

Hej Folk,

Jeg henter nogle stringe ud fra en database som jeg tester op mod nogle andre stringe. her kommer lige noget slam kode...:

private void GetAppsRunning()
{
    SqlConnection ThisCon = new SqlConnection("server=cs01; database=ProgramsRunning; Integrated Security=true");
    ThisCon.Open();
    ArrayList SearchFor = new ArrayList();
    SqlCommand ThisCommand = new SqlCommand("SELECT ProgramName, ProcessName FROM tblPrograms WHERE Active = @Active", ThisCon);
    ThisCommand.Parameters.Add("@Active", SqlDbType.VarChar, 3);
    ThisCommand.Parameters["@Active"].Value = "Yes";
    SqlDataReader ThisDataReader = ThisCommand.ExecuteReader();
    while (ThisDataReader.Read())
    {
        SearchFor.Add(ThisDataReader[1].ToString());
    }
    ProgramsRunning.Items.Clear();
    ManagementObjectSearcher searcher;
    foreach (string i in AliveHosts)
    {
        try
        {
            searcher = new ManagementObjectSearcher("\\\\" + i.ToString() + "\\root\\CIMV2", "SELECT Caption FROM Win32_Process");
            foreach (ManagementObject x in searcher.Get())
            {
                // ser om process skal registreres
                if (SearchFor.Contains(x["Caption"].ToString()))
                {
                    ProgramsRunning.Items.Add(i.ToString() + " - " + x["Caption"].ToString());
                }
            }
        }
        catch (Exception)
        {
            ErrorMessages.Items.Add(i.ToString());
        }
    }
}

Jeg ved ikke helt hvad den bedste måde er at lave det på, derfor jeg kommer med mit spm.

Jeg skal have talt +1 op, hvis den process findes på den computer, sådan at jeg til sidst kan se hvor mange af de valgte processer der kører...

Håber i forstår, ellers kom genre med spm...

// ouT
Avatar billede arne_v Ekspert
24. februar 2005 - 14:54 #1
Det er ikke helt forkert. En Hashtable var nok lidt hurtigere end en ArrayList,
men det er en detalje.
Avatar billede Syska Mester
24. februar 2005 - 15:10 #2
Hvad er den store forskel på ArrayList og Hashtable? altså hashtable er hurtigere, men er det ikke kun hvis der er flere ens entries?

Tror jeg har fundet en ide til hvordan jeg skal lave min tælle op ting

int[] Usage = new int[SearchFor.count];

og så hvis programmet er i listen lave en:
Usage[l.IndexOf( x["Caption"].ToString() )]++;

for så passe de 2 array index's sammen.... er der en smartere måde at lave det på? for bagefter skal det smides ned i en database....
Avatar billede arne_v Ekspert
24. februar 2005 - 15:12 #3
Nej - Hashtable er altid hurtigere (hvis alle objekter har samme hash code så er
de lige hurtige, men det er urealistisk)
Avatar billede Syska Mester
24. februar 2005 - 15:23 #4
Hvad er der så af fordele ved ArrayList?
Avatar billede Syska Mester
24. februar 2005 - 15:23 #5
og ser min måde at tælle op på god nok ud eller hvordan ville du lave den?
Avatar billede arne_v Ekspert
24. februar 2005 - 15:25 #6
HashTable har et lille bitte overhead p.g.a. hash beregningen.

ArrayList har indbygget en række følge, hvilket ofte er en god egenskab.
Avatar billede arne_v Ekspert
24. februar 2005 - 15:28 #7
Jeg kan ikke helt gennemskue din logik.

Umiddelbart ville jeg tro at Usage skulle være bool[] ikke int[]
Avatar billede Syska Mester
24. februar 2005 - 16:39 #8
Usage alas TimeUsed, den scanner jo flere computere igennem og kigger efter nogle bestemte process hos de forskellige, findes de, skal den ligge +1 til mit int array
Avatar billede arne_v Ekspert
24. februar 2005 - 16:45 #9
OK - jeg har som sagt ikke gennemskuet den finere logik
Avatar billede Syska Mester
26. december 2005 - 21:19 #10
lukker
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