Avatar billede ingeman Seniormester
14. marts 2004 - 11:06 Der er 16 kommentarer og
1 løsning

Hvordan fjerner man element

for t= 0 to ubound(IPList)
            response.write "IP: "&IPList(t)&"<br>"
        next

Jeg skal checke på alle elementer i IPlist og have fjernet
det element som macher ?
Avatar billede nmh Nybegynder
14. marts 2004 - 12:03 #1
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?
Avatar billede nmh Nybegynder
14. marts 2004 - 12:17 #2
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.

Er det sådan en programstump du er ude efter?
Avatar billede ingeman Seniormester
14. marts 2004 - 12:41 #3
Ja det er det ! - Jeg manger ligeledes kode der kan checke om IPList er tom ?
Avatar billede nmh Nybegynder
14. marts 2004 - 12:55 #4
Du kan jo løbe den igennem således:
dim i, IPlistEjTom
for i=0 to Ubound(IPlist)
  if IPlist(i)<>"" then
    IPlistEjTom=True
    exit for
next

Er det sådan en test, du er ude efter?
Avatar billede nmh Nybegynder
14. marts 2004 - 13:00 #5
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?
Avatar billede ingeman Seniormester
14. marts 2004 - 13:07 #6
If Ubound(IPlist)=-1 Then IPListTom

Giver det ikke samme resultat ?
Avatar billede ingeman Seniormester
14. marts 2004 - 13:08 #7
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
Avatar billede ingeman Seniormester
14. marts 2004 - 13:10 #8
Jeg bruger det til at lave adgangsbegrænsning til IIS5.0 web server på IP
Avatar billede ingeman Seniormester
14. marts 2004 - 13:11 #9
Jeg fandt den her på nettet

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
Avatar billede ingeman Seniormester
14. marts 2004 - 13:13 #10
Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")

Ved du hvor man kan hente hvilken web hotel nr på man er på ?
Avatar billede nmh Nybegynder
14. marts 2004 - 14:00 #11
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.
Avatar billede ingeman Seniormester
14. marts 2004 - 14:08 #12
Den er erklæret sådan
dim IPList

For at checke for om listen er tom - er det den her så ?

dim i, IPlistEjTom
for i=0 to Ubound(IPlist)
  if IPlist(i)<>"" then
    IPlistEjTom=True
    exit for
next
Avatar billede ingeman Seniormester
14. marts 2004 - 14:11 #13
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)

IPList kan være tom - hvordan skal det så se ud ?
Avatar billede nmh Nybegynder
14. marts 2004 - 14:24 #14
Hvis du erklærer IPlist således:

dim IPlist
redim IPlist(-1)

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).
Avatar billede ingeman Seniormester
14. marts 2004 - 14:53 #15
Set SecObj = GetObject("IIS://LocalHost/W3SVC/1/Root")

Ved du hvor man kan hente hvilken web hotel nr på man er på ? - ved du det ?
Avatar billede ingeman Seniormester
14. marts 2004 - 17:03 #16
Ok jeg har fået løst mit problem så langt - åbn svar
Hvis du ved det sidste med site nr hører jeg gerne ?
Avatar billede nmh Nybegynder
14. marts 2004 - 18:34 #17
Her er et. :o)
Jeg kan desværre ikke sige noget om web-hoteller.
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
Kurser inden for grundlæggende programmering

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