Det er jo bare at ændre ganske lidt i svaret fra mikbj, der jo opererer med et array af almindelige typer. Hvis du vil sorterer efter IP skriver du naturligvis
Ja, det var kun den ene af 2 fejl jeg fandt. Den anden er, at du ikke må sende et array af brugerdefinerede typer som parameter. Men da du jo netop har erklæret Source() som en GLOBAL variabel, er det jo også ren nonsens at sende det med som en parameter til en Sub. Ret Sub'en fra mikbj så den IKKE modtager noget i procedurehovedet, men i stedet opererer direkte på Source. Og tilføj den rettelse jeg har givet med at bruge ArrayName(row).Antal i stedet for ArrayName(row)
Det virker - har nemlig selv prøvet efter denne gang ;o)
Hvad mener du med at den ikke "sorterer IP'en med"?
Hvis det er således, at når du flytter fx. MitArray(index).Antal og den tilsvarende MitArray(index).IP ikke flytter med (gør den virkelig ikke det - ja, jeg har aldrig prøvet det, men det lyder da mystisk. Whatever - ikke alting opfører sig som man forventer;-), ja så er det jo bare at flytte både .Antal OG(!!!) .Ip i din Sub SortArrays()
Lige nu flytter den kun .Antal
Det er blot at kopiere et par linier og skifte .Antal til .IP
Jeg havde lavet en lille stave fehler...Jeg havde fået den til at sortere IP'en med...Mit problem var at den dumpede en IP hver gang....Altså "glemmer" en IP...
Inden jeg sorterer har jeg f.eks. en UBound på 3 men efter er den så kun på 2...
martin_moth >> Kan ikke se at det løser mit problem med at den glemmer en IP...Det er jo stort set samme kode som jeg selv havde fået lavet, bare skrevet på en anden måde...
1) Så var IP også "" før du kørte sorteringen 2) Der er en fejl i din sorteringsalgoritme.
Løsningen ligger i en eller 2
For at undgå slåfejl (kunne være forklaringen på 2), hvor du taster et forkert variabelnavn ind (der naturligvis indeholder ingenting), kan du få VB til at kræve variabelerklæring - så fanger du alle slåfejl! I øvrigt det eneste rigtige at erklære variabler - altid!
'192.168.2.2' optræder 3 gange '80.222.178.72' optræder 1 gange '212.242.89.206' optræder 1 gange '80.202.63.9' optræder 1 gange '192.168.2.10' optræder 1 gange '' optræder 0 gange '65.40.185.105' optræder 1 gange '61.174.197.54' optræder 1 gange
Og sådan her efter:
'192.168.2.2' optræder 3 gange '80.222.178.72' optræder 1 gange '212.242.89.206' optræder 1 gange '80.202.63.9' optræder 1 gange '192.168.2.10' optræder 1 gange '65.40.185.105' optræder 1 gange '61.174.197.54' optræder 1 gange '' optræder 0 gange
Og det er med flg. sorterings kode:
Sub SortArrays() Dim Limit As Integer, iSwitch, Row As Integer, strCopy As String Limit = UBound(Source) Do iSwitch = False For Row = 0 To (Limit - 1) If Source(Row).Antal < Source(Row + 1).Antal Then strCopy = Source(Row).Antal Source(Row).Antal = Source(Row + 1).Antal Source(Row + 1).Antal = strCopy
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.