Avatar billede crunch Nybegynder
18. marts 2003 - 14:49 Der er 9 kommentarer og
1 løsning

array søg for værdi..

HEj .

Jeg har lavet noget kode som dette her:

intFolderArray = intFolderArray + "," + (CType(rdr.GetInt32(0), String))


dette genererer en kommasepareret liste som:
4,9,7

nu har jeg så en anden funktion hvor jeg skal tjekke om nogle af værdierne er magen til ét af talene i den kommaseparerede liste. Altså (psoudo):

If (CType(rdr.GetInt32(0), String)) = intFolderArray Then
bla. bla.
else
bla.bla.
end if


Hvordan skrives dette syntaktisk og hvordan søger jeg for at den kun udvælger hele tal altså f.eks. 345 ved ,345,346,347 og ikke kun 4 ?
Avatar billede erikjacobsen Ekspert
18. marts 2003 - 14:52 #1
Du skal vel blot lade være med at have en kommasepareret liste og lave et array i stedet for.
Avatar billede crunch Nybegynder
18. marts 2003 - 15:14 #2
aha,,

men det er nok fordi jeg ikke er så skrap i arrays at jeg ikke kan få det til at virke.. Jeg har en private og en public funktion, hvor jeg ikke rigtigt kan få det til at virke ved at dimmensionere det undenfor. altså f.eks.:

Public intFolderArray

Private Function Act(ByVal intActiveid)
For I = 0 To 10
intFolderArray = (CType(rdr.GetInt32(0), String))
Next
end function

Public Function listCreate(ByVal Parentid)
Response.write(intFolderArray)
end Function


- så udskrives der kun et tal. Det jeg gerne vil have er en liste ad tal at sammenligne med en variabel for at se om der er ligheder...
Avatar billede burningice Nybegynder
18. marts 2003 - 18:31 #3
crunch>> ?! det der vist ikke helt korret vb7 kode

Som eric siger, så brugt et array istedet... ArrayList har faktisk de funktioner du skal bruge:

Private Function CreateList() As ArrayList
Dim arr As New ArrayList = New ArrayList()
Dim i As Integer

For i = 0 To 10
arr.Add(CType(rdr.GetInt32(0), String)
Next

CreateList = arr
End function

ArrayList arr = CreateList()

If arr.Contains("345") Then
' ja, den var der
Else
'Den var der ikke
End If
Avatar billede burningice Nybegynder
18. marts 2003 - 18:32 #4
ArrayList arr = CreateList()
skal være
Dim arr As ArrayList = CreateList()

jeg koder c# til dagligt ;)
Avatar billede crunch Nybegynder
18. marts 2003 - 20:38 #5
Tak for dit forsøg.. jeg har fået dit eksempel til at virke med:

Dim arr As New ArrayList()
arr.Add(CType(rdr.GetInt32(0), String))

If arr.Contains("7") Then
Response.Write("ja, den var der")
End If


men det virker ikke med;

Private Function test1(ByVal id)
mit loop her..
Dim arr As New ArrayList()
arr.Add(CType(rdr.GetInt32(0), String))
end function

Public Function test(ByVal id)
If arr.Contains("7") Then
Response.Write("ja, den var der")
End If
end function

altså problemet med at dele mellem funktioner.. hvordan kan jeg trække værdien frem i min sidste funktion ?
Avatar billede burningice Nybegynder
18. marts 2003 - 22:22 #6
Du erklærer også dine funktioner forkert !!... mon ikke du lige skulle smutte en tur forbi MSDN og repetere syntaksen lidt?

det hedder enten funtion As type hvis det skal returnere noget eller bare Sub hvis det er en rutine, plus at dine variabler går ud af scope når funktionen/sub'en er blevet udført

altså,

Dim arr as ArrayList = New ArrayList()

Public Function Test1()
arr.Add("whatever")
End Function

Public Function
If arr.Contains("7") Then
Response.Write("ja, den var der")
End If
end function
Avatar billede crunch Nybegynder
18. marts 2003 - 23:21 #7
ved det godt, det var også kun et stykke af min kode jeg skrev ned. Jeg bruger faktisk værdierne der kommer ind til noget andet. Mit problem er dog stadigvæk at jeg ikke kan få ovenstående til at virke.. Kun hvis det udskriver arrayet i samme funktion. Min kode har nedenstående til at køre et recordsæt igennem:

Dim arr as ArrayList = New ArrayList()

Public Function test1(ByVal id)
finder de værdier jeg iøvrigt bruger
opbygger array
end function

Public Function (ByVal id)
andet kode....
If arr.Contains("7") Then
Response.Write("ja, den var der")
End If
end function

- men hvordan får jeg skidtet ud.. kan jeg ikke få til at virke. Men anyway. tak for dit forsøg på at hjælpe. Kan du ikke oprette et "svar" så jeg kan få lukket spg.målet.
Avatar billede burningice Nybegynder
19. marts 2003 - 16:47 #8
nu har du selvfølgelig ikke skrevet hele din kode, så jeg kan ikke sige dig hvor det er det går galt... du giver mig heller ikke nogen fejlmeddelelser at arbejde med, hvilket heller ikke gør det nemmere...

dette burde dog virke:

public class _default : Page {
  ArrayList arr = new ArrayList();

  public void Page_Load(object sender, EventArgs e) {
    UdfyldArray();
    Response.Write(ErIArray("7").ToString());
  }

  private void UdfyldArray() {
      for (int i = 0; i < 10; i++) {
        arr.Add(i.ToString());
      }
  }
 
  private bool ErIArray(string s) {
      if (arr.Contains(s) {
          return true;
      } else {
          return false;
      }
  }
}
Avatar billede crunch Nybegynder
20. marts 2003 - 23:25 #9
Fik det til at virke ... jublle.. kan du ikke oprette et "svar" - tak for hjælpen.
Avatar billede burningice Nybegynder
21. marts 2003 - 08:14 #10
:)
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