Avatar billede thewizard Nybegynder
23. januar 2005 - 02:45 Der er 30 kommentarer og
1 løsning

Find og skriv..

2 lister.

1. list:

1
2
3
4
5
6
7

2. Liste:

5
2
4

Første liste er blot ID'er. Samtlige af disse skal sammenlignes med ID'erne på 2. liste. Hvis ID'et findes lav en msgbox "WEEE", ellers msgbox "buh".

:) Good luck.
Avatar billede sjh Nybegynder
23. januar 2005 - 04:00 #1
'----------------------------- Form1 -----------------------------
Option Explicit

Private Sub Command1_Click() ' <- CommandButton1
Dim i As Integer
Dim strTemp As String

  With List1 ' <- ListBox1
      For i = 0 To (.ListCount - 1)
        strTemp = strTemp & "*" & .List(i) & "*"
      Next ' i
  End With

  With List2 ' <- ListBox2
      For i = 0 To (.ListCount - 1)
        If InStr(1, strTemp, "*" & .List(i) & "*") Then
          MsgBox "Nummer " & .List(i) & " er både i ListBox 1 og ListBox 2"
        End If
      Next ' i
  End With
End Sub

Private Sub Form_Load()
Dim i As Integer

  With List1 ' <- ListBox1
      For i = 1 To 7
        .AddItem i
      Next ' i
  End With

  With List2 ' <- ListBox2
      .AddItem "5"
      .AddItem "2"
      .AddItem "4"
  End With
End Sub
'----------------------------- Form1 -----------------------------
Avatar billede thewizard Nybegynder
23. januar 2005 - 15:00 #2
hey mester - første liste er et listview - derfor gælder .list(i) osv naturligvis ikke, som det gør på en normal liste :)

Kan du hjælpe?
Avatar billede thewizard Nybegynder
23. januar 2005 - 15:07 #3
Virker mester ;) point.
Avatar billede thewizard Nybegynder
23. januar 2005 - 15:11 #4
Hmm .. virkede sgu ikke :). Hvis du stadig læser her, så post lige.
Avatar billede sjh Nybegynder
23. januar 2005 - 16:43 #5
lad mig høre
Avatar billede thewizard Nybegynder
23. januar 2005 - 18:57 #6
Puha. :)

Jamen det er pænt svært ;)

Har en list som hedder lstdownloads. Dette er en listview. Når jeg klikker på en knap, skal den sammenligne disse 2 lister (lstid1 og lstdownloaded) som jeg har snakket om, findes den skal den udskrive i "side"-kolonnen: downloaded, hvsi ikke, så skriv: Whatever... I en 3. liste - lstdownloads.


Lstdownloaded -> Indeholder ID's som allerede ER downloaded
Lstid1 -> List som indeholder ID's til navnene
Lst1 -> Indeholder navnene. Bemærk at hvis man siger lst1.list(1) vil det være navnet til har tilhørerende ID på lstid1.list(1). :)
Listdownloads -> Her udskrives alle navnene som står i lst1, MEN i næste kollonne skal derstå om den findes i listen "lstdownloaded".

Fårstå du? :).
Avatar billede thewizard Nybegynder
23. januar 2005 - 19:02 #7
Set itm = lstdownloads.ListItems.Add(, , lst1.List(i), ico, ico)
itm.SubItems(1) = "Downloaded"

Den skal man bruge til at sætte "downloaded" i næste kolonne ;).
Avatar billede sjh Nybegynder
23. januar 2005 - 19:10 #8
Jeg kan ikke lige se din ide..

men var det ikke nemmer at du bare ændre navnet og icon i lstdownloads alt efter om du downloader eller om filen er downloaded??
Avatar billede thewizard Nybegynder
23. januar 2005 - 19:24 #9
hmmm jo det ville det jo egentlig :)
Avatar billede thewizard Nybegynder
23. januar 2005 - 19:47 #10
With lstid1 ' <- ListBox1
      For p = 0 To (.ListCount - 1)
        strTemp = strTemp & "*" & .List(p) & "*"
      Next ' i
  End With

  With lstDownloaded ' <- ListBox2

      For p = 0 To (.ListCount - 1)
        If InStr(1, strTemp, "*" & .List(p) & "*") Then
            Set itm = lstdownloads.ListItems.Add(, , lst1.List(p), ico, ico)
            itm.SubItems(1) = "Already downloaded"
        Else
            Set itm = lstdownloads.ListItems.Add(, , lst1.List(p), ico, ico)
            itm.SubItems(1) = "weird"
        End If
      Next ' i
  End With

Kan bare ikke få det til at virke. På lstdownloaded har jeg:

1
2
4
6
10
56

på lstid1:

1
2
3
4
5
6
7

Den udskriver på lstdownloads, navnene til følgende ID:

1 - Already downloaded
2 - Already downloaded
3 - Already downloaded
4 - Already downloaded
5 - weird
6 - weird

Og udskriver ikke 7'eren, som er den sidste på listen.
Avatar billede thewizard Nybegynder
23. januar 2005 - 19:51 #11
Den korrekte udskrift burde være:

1 - Already ...
2 - Already...
3 - Weird
4 - Already...
5 - Weird
6 - Already
7 - weird
Avatar billede thewizard Nybegynder
23. januar 2005 - 19:52 #12
Jeg kan godt se din ide med

For p = 0 To (.ListCount - 1)

Men fjerner jeg -1 fra strengen, udskriver den den sidste fra listen - men dette burde jo ikke være sådan :).
Det er jo rigtigt at den starter fra 0.
Avatar billede sjh Nybegynder
23. januar 2005 - 19:53 #13
Her er der kun 6 -> 1, 2, 4, 6, 10, 56 derfor udskriver den kun de 6 af dem ;)
Avatar billede sjh Nybegynder
23. januar 2005 - 19:57 #14
Hvis du har 6 i en Listbox, vil ListCount viser at 6, men da den første er 0 og den sidste er 5 kan du ikke loope 6 gange, så vil du få fejl når den kommer til .List(6)
Avatar billede thewizard Nybegynder
23. januar 2005 - 19:58 #15
With lstid1 ' <- ListBox1
      For p = 0 To (.ListCount - 1)
       
        strTemp = strTemp & "*" & .List(p) & "*"

       
        lblstatus.Caption = strTemp
      Next ' i
  End With

  With lstDownloaded ' <- ListBox2

      For p = 0 To (lstid1.ListCount - 1)
        If InStr(1, strTemp, "*" & .List(p) & "*") Then
            Set itm = lstdownloads.ListItems.Add(, , lst1.List(p), ico, ico)
            itm.SubItems(1) = "Already downloaded"
        Else
            Set itm = lstdownloads.ListItems.Add(, , lst1.List(p), ico, ico)
            itm.SubItems(1) = "weird"
        End If
      Next ' i
  End With


Såådan.. men udskriften er stadig forkert :)
Avatar billede sjh Nybegynder
23. januar 2005 - 19:59 #16
kan du ikke loope fra 1 til 6 -> men fra 0 til 5  :D
Avatar billede thewizard Nybegynder
23. januar 2005 - 20:00 #17
;) se nu hvad jeg har skrevet... korrekt?
Avatar billede thewizard Nybegynder
23. januar 2005 - 20:01 #18
Sådan..

Kig på den her.

  With lstid1 ' <- ListBox1
      For p = 0 To (.ListCount - 1)
       
        strTemp = strTemp & "*" & .List(p) & "*"

       
        lblstatus.Caption = strTemp
      Next ' i
  End With

  With lstid1 ' <- ListBox2

      For p = 0 To (.ListCount - 1)
        If InStr(1, strTemp, "*" & lstDownloaded.List(p) & "*") Then
            Set itm = lstdownloads.ListItems.Add(, , lst1.List(p), ico, ico)
            itm.SubItems(1) = "Already downloaded"
        Else
            Set itm = lstdownloads.ListItems.Add(, , lst1.List(p), ico, ico)
            itm.SubItems(1) = "weird"
        End If
      Next ' i
  End With
Avatar billede thewizard Nybegynder
23. januar 2005 - 20:03 #19
Hvorfor er det kun 5 og 6 som får udskriften: weird.. og resten downloaded.? :)
Avatar billede thewizard Nybegynder
23. januar 2005 - 20:11 #20
mester? ;)
Avatar billede thewizard Nybegynder
23. januar 2005 - 21:23 #21
Tuuuuuud... skriv snart :) sidder fast med det her.
Avatar billede sjh Nybegynder
23. januar 2005 - 21:25 #22
Jeg kan ikke lige se hvorfor du vil bruge flere ListBoxe??

Du skal vel bare tilføje de links du skal dovnloade i et ListView og fortælle .SubItems(1) om den er "weird" eller "Already downloaded" ??
Avatar billede thewizard Nybegynder
23. januar 2005 - 21:51 #23
ja?..

Forstår ikke lige hvad du mener, sjh :)
Avatar billede thewizard Nybegynder
23. januar 2005 - 21:55 #24
Hvordan ville du lave det?
Avatar billede sjh Nybegynder
23. januar 2005 - 22:00 #25
se nu her:

' --------------------------- Form1 ---------------------------
Option Explicit

Private Sub Command1_Click()
Dim i As Integer
Dim strTemp As String

  ' --- Test filer som er downloaded ---
  With List1 ' <- ListBox1
      For i = 0 To (.ListCount - 1)
        strTemp = strTemp & "*" & .List(i) & "*"
      Next ' i
  End With
  ' --- Test filer som er downloaded ---

  With ListView1.ListItems ' <- ListView
      For i = 1 To .Count
        If InStr(1, strTemp, "*" & .Item(i).Text & "*") Then
          .Item(i).SubItems(1) = "Downloaded *"
        End If
      Next ' i
  End With
End Sub

Private Sub Form_Load()
Dim i As Integer
Dim lvItem As ListItem

  With ListView1 ' <- ListView
      .View = lvwReport
      With .ColumnHeaders
          .Add , , "File"
          .Add , , "State"
          .Add , , "Url"
      End With
  End With
 
  For i = 1 To 7
    Set lvItem = ListView1.ListItems.Add(, , "C:\filename" & i & ".zip")
    With lvItem
        .SubItems(1) = "Downloader"
        .SubItems(2) = "http://url.dk/filename" & i & ".zip"
    End With
  Next ' i

  ' --- Test filer som er downloaded ---
  With List1 ' <- ListBox
      .AddItem "C:\filename2.zip"
      .AddItem "C:\filename6.zip"
      .AddItem "C:\filename1.zip"
  End With
  ' --- Test filer som er downloaded ---
End Sub
' --------------------------- Form1 ---------------------------
Avatar billede sjh Nybegynder
23. januar 2005 - 22:01 #26
du skal bruge: Command1, List1 og ListView1
Avatar billede thewizard Nybegynder
23. januar 2005 - 22:04 #27
Jamen

Vi har id-listen, downloadedid-listen <-- De to er jo nødvendige.
Avatar billede thewizard Nybegynder
23. januar 2005 - 22:07 #28
Prøver lige :) 2 sec
Avatar billede sjh Nybegynder
23. januar 2005 - 22:07 #29
så tror jeg, at jeg står af..
Avatar billede sjh Nybegynder
23. januar 2005 - 22:10 #30
Du har vist også fået svar på det du spurte om..
Avatar billede thewizard Nybegynder
23. januar 2005 - 22:10 #31
ahhh det ser godt ud, det du har lavet :). Jeg kigger lige på det, takker igen sjh..

Point er fortjent! ;)
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