IPlist er åbenbart et array. Du får med ovenstående udskrevet alle elementer. Hvad mener du med, at "du vil have fjernet det element, som matcher"? Har du en IP-adresse, der ikke længere må optræde i listen? Og du så skal have lavet en ny liste uden dette element?
Det kan gøres således: Hvis det element, der skal fjernes er gemt i den variable IPfjern, kan det gøres således: dim nyIPlist(),m n=Ubound(IPlist) redim nyIPlist(n) m=-1 for t=0 to n if IPlist(t)<>IPfjern then m=m+1 nyIPlist(m)=IPlist(t) end if next if m>=0 then redim preserve nyIPlist(m) end if
Nu vil nyIPlist være et array med alle dine IPadresser fra før, men adressen IPfjern findes ikke.
Hvordan bliver IPlist erklæret, og hvordan sætter du data ind i dette array? Er IPlist dynamisk, så du kan ændre størrelse på det? For det er vel mest naturligt at holde styr på om den får værdier lagt ind på det sted, hvor det faktisk sker?
Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root") Set MyIPSec = SecObj.IPSecurity If (TRUE = MyIPSec.GrantByDefault) Then MyIPSec.GrantByDefault = FALSE end if
IPList = MyIPSec.IPGrant
'Check om IP er i liste - hvis den er - fjern den for t= 0 to ubound(IPList) RemoveFromArray IPList,PrivateIP & ", 255.255.255.255" next
If Ubound(IPlist)=-1 Then MyIPSec.GrantByDefault = TRUE
MyIPSec.IPGrant = IPList SecObj.IPSecurity = MyIPSec SecObj.Setinfo Set SecObj = nothing Set MyIPSec = nothing
Sub RemoveFromArray(aList, RemoveThis) Dim I,RemoveThisIndex for i = LBound(aList) to UBound(aList) if Cstr(aList(i)) = Cstr(RemoveThis) then RemoveThisIndex = i exit for end if next if RemoveThisIndex = "" then exit Sub If RemoveThisIndex > UBound(aList) Then Exit Sub End If If RemoveThisIndex < UBound(aList) Then ' Shuffle the elements down For I = RemoveThisIndex + 1 to UBound(aList) aList(I - 1) = aList(I) Next End If ReDim Preserve aList(Ubound(aList) - 1) End Sub
Hvis IPlist er erklæret således dim IPlist() så vil man få en fejl, hvis man prøver at bruge ordren if Ubound(IPlist)=-1 then ....
Rutine RemoveFromArray tror jeg vil virke. I mit første forslag, hvor jeg lavede et nyt array nyIPlist, turde jeg ikke benytte ordren redim IPlist, da jeg ikke vidste om IPlist var erklæret, så det var muligt. Når det er tilfældet vil jeg ændre koden til dette: Jeg antager at der er noget i IPlist, så der ikke kommer fejl, når Ubound kaldes. Jeg antager igen, at elementet der skal fjernes er i IPfjern. Hvis det findes flere steder, fjernes det alle steder. Det sker ikke i den rutine du fandt på nettet (RemoveFromArray)
n=Ubound(IPlist) m=-1 for i=0 to n if IPlist(i)<>IPfjern then m=m+1 IPlist(m)=Iplist(i) end if next redim preserve IPlist(m)
Nu er IPfjern væk fra listen, om IPlist har fået ændret sin dimension.
så har du fra nu af altid lov til at spørge på Ubound(IPlist) Den er så -1, når listen er tom. Uden den sidste ordre redim .. vil det gå galt.
Så får du ikke en fejl, når du spørger på Ubound(IPlist), når den er tom.
Dit sidste indlæg, hvor du har en løkke, der løver IPlist igennem er vel egentlig overflødigt. Jeg kom med det forslag, fordi jeg troede, at du måske havde et array, der ikke var dynamisk, og som måske kun indeholdt tomme felter. Hvis du hele tiden sørger for at IPlist kun vokser, når der tilføjes IP-adresser, vil du altid kunne teste ved blot at spørge på Ubound(IPlist).
Her er et. :o) Jeg kan desværre ikke sige noget om web-hoteller.
Synes godt om
Ny brugerNybegynder
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.