Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

visual basic - filtrowanie zawartości pliku na podstawie innego

wabikboy 08 Mar 2016 00:02 810 7
  • #1
    wabikboy
    Level 16  
    Witam

    Prosił bym o wsparcie, w jaki sposób w visual basic mogę filtrować plik za pomocą innego pliku.
    np wczytuję plik wzorzec

    banany
    pomarańcze
    truskawki
    cytryny
    jabłka

    i drugi plik

    pomarańcze 200kg
    jabłka 133kg
    cytryny 50kg
    truskawki 23kg
    banany 125kg
    mandarynki 18kg
    marchewki 30kg
    itd ...

    Chodzi dokładnie o to aby wyświetlić tylko te pozycje z drugiego pliku które znajdują się w pliku wzorca.
  • #2
    marcinj12
    Level 40  
    Z jakiego środowiska do Visual Basica korzystasz?
  • #3
    wiesniak
    Level 31  
    Jaki VB? VB6, VB.NET czy może VBA?
    Jeśli ten .NETowy, to proponuję wczytać plik wzorca do HashSet, a czytając drugi plik sprawdzać każdorazowo czy dane słowo występuje we wcześniej stworzonej kolekcji HashSet (metoda Contains).
  • #4
    wabikboy
    Level 16  
    Od razu dziękuję za zainteresowanie.
    Korzystam z visual studio 2010
  • #5
    wabikboy
    Level 16  
    Doszedłem do takiego stanu:
    lecz nie mogę ogarnąć pętli w pętli

    Code: vbscript
    Log in, to see the code

    pierwsza pętla wykonuje się tylko raz i jak by się zatrzymywała
  • #6
    marcinj12
    Level 40  
    Dlaczego nie zastosowałeś porady kolegi z użyciem HashSeta? Było by bardziej optymalnie.
    Zamiast tablicy o stałej długości już lepiej użyć List<string> i metody Add...
    A błąd masz dlatego, że zagnieździłeś pętle. Po dojściu na koniec pliku 1 kursor nie wraca na początek, dlatego pętla się nie wykonuje. Rozwiązanie: nie zagnieżdżaj pętli, w pierwszej wczytaj dane do listy, w drugiej - sprawdzaj i dodawaj do DGV.
  • #7
    wabikboy
    Level 16  
    Nie zastosowałem HashSet gdyż IntStr wydał mi się bardziej wygodny ponieważ szuka ciągu znaków w taki sposób jak mi jest potrzebny chociaż nie zagłębiałem się w działanie HashSet.
    Poradziłem sobie z tym kodem i działa tylko potrzebuję jeszcze porady jak wyciągnąć informacje o długości tablicy bo chcę aby pętla FOR wykonała się do końca tablicy
    Code: vbscript
    Log in, to see the code
  • #8
    marcinj12
    Level 40  
    marcinj12 wrote:
    Zamiast tablicy o stałej długości już lepiej użyć List<string> i metody Add...
    A poza tym polecam zapoznanie się z funkcją File.ReadAllLines - jedną linijką można odczytać cały plik od razu do tablicy.
    https://msdn.microsoft.com/pl-pl/library/s2tt...?cs-save-lang=1&cs-lang=vb#code-snippet-1
    PS1. W pętli for nie inkrementujesz już samemu y = y + 1
    PS2. Po znalezieniu dopasowania można przerwać dalszą część pętli bodaj przez Exit For