Voor een tooltje wat ik voor mezelf aan het bouwen ben heb ik de volgende struct:
Vervolgens heb ik een method welke het aantal logical disks opzoekt. (In dit geval 2)
Tevens heb ik ook de volgende ArrayList
Vervolgens wil ik dit in de GUI uitlezen mbv:
Ik heb 2 harddisks in mijn systeem heb zitten. C: en E: Als ik het appje run, zie ik 2x E: staan ipv C: en E:.
Als ik de complete collectie van DiskInfoArray doorloop, dan zie ik netjes de 2 verschillende schijven staan. Ergens wordt er dus de waarde voor de C: schijf overschreven. Komt dit door de struct of doe ik iets compleet fout in het wegschrijven van de waardes in de ArrayList DiskInformation()?
Edit: het betreft hier een 1.1 project, dus Generics oid (weet nog niet zeker of die hier handig bij zijn) kan ik niet gebruiken.
C#:
1
2
3
4
5
6
7
8
9
10
11
| public struct DiskInfoStruct { public string Name,FileSystem,FreeSpace,Size; public DiskInfoStruct(string name, string filesystem, string freespace,string size) { Name = name; FileSystem = filesystem; FreeSpace=freespace; Size=size; } } |
Vervolgens heb ik een method welke het aantal logical disks opzoekt. (In dit geval 2)
Tevens heb ik ook de volgende ArrayList
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public ArrayList DiskInformation() { ArrayList ht = new ArrayList(); ArrayList myArr = obj.ObjectPropertyArray("Win32_LogicalDisk where DriveType=3"); DiskInfoStruct distruct = new DiskInfoStruct(); for(int c=0;c<_numberOfHardDisks;c++) { for(int i=0;i<myArr.Count;i++) { PropertyData prop = (PropertyData)myArr[i]; if(prop.Name=="Name") distruct.Name=prop.Value.ToString(); if(prop.Name=="FreeSpace") distruct.FreeSpace=prop.Value.ToString(); if(prop.Name=="Size") distruct.Size=prop.Value.ToString(); if(prop.Name=="FileSystem") distruct.FileSystem=prop.Value.ToString(); } ht.Add(distruct); } return ht; } |
Vervolgens wil ik dit in de GUI uitlezen mbv:
C#:
1
2
3
4
5
6
7
| SystemStatsLibrary.DiskInfo disk = new DiskInfo(); ArrayList ht = disk.DiskInformation(); for(int i = 0;i<ht.Count;i++) { DiskInfoStruct di = (DiskInfoStruct)ht[i]; lblInfo.Text+=di.Name; } |
Ik heb 2 harddisks in mijn systeem heb zitten. C: en E: Als ik het appje run, zie ik 2x E: staan ipv C: en E:.
Als ik de complete collectie van DiskInfoArray doorloop, dan zie ik netjes de 2 verschillende schijven staan. Ergens wordt er dus de waarde voor de C: schijf overschreven. Komt dit door de struct of doe ik iets compleet fout in het wegschrijven van de waardes in de ArrayList DiskInformation()?
Edit: het betreft hier een 1.1 project, dus Generics oid (weet nog niet zeker of die hier handig bij zijn) kan ik niet gebruiken.
[ Voor 3% gewijzigd door TeeDee op 13-03-2007 23:34 ]
Heart..pumps blood.Has nothing to do with emotion! Bored