Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 2.470 pregleda

Najnovija ↓

Skolski projekat 19.01.2006. u 09:34 · pre 253 meseca #1
Pozdrav!
Imam jedno pitanje ako nije problem!Ovako potrebno (obavezno) ja da u nasoj skoli napravim program za arhivu!
Radi se o tome da skola ima 570 arhiva (txt fajlova sa imenima od arhiva1.txt do arhiva570.txt) te sam arhive dodao u jedan folder (/ARHIVE) i ubacio ih u combo1 e sad je problem pretraga!Nacin pretrage je sledeci:
ako neko u text1.text unese neku rijec za trazenje i u combo1 izabere npr arhiva55 da kao rezultat nakon klikanja na command1 u text3.text ispise sve recenice koje sadrze tu rijec. A u slucaju da se u combo1 ne izabere nista onda treba da pretrazuje sve arhive i ispisuje rzultate !Eto ako iko zna kao ja sam zaglavio i nece dalje a moram to napraviti jer ce mi to biti i zavrsni dio ispita!Ako ko ima ideju ili nesto slicno neka posalje na mail ili postira ovdje!
Re: Skolski projekat 19.01.2006. u 12:09 · pre 253 meseca #2
pa ako su te arhive u obicnom text formatu (tj bez posebnog formatiranja) onda ce biti malo teze rastaviti sadrzaj arhive na recenice, mozes da ih splitujes po tackama (.) ali bi ti onda recenicu tipa:
"Ucenik br. 1111 ima taj i taj prosek." (il sta ti se vec nalazi u tim arhivama, ovo je samo za primer)
rastaviti na dve:
"Ucenik br." i " 1111 ima taj i taj prosek." evo ja cu ti dati primer pa ti vidi dal ti odgovara:

Code:

Private Sub Command1_Click()
  Dim fn As Integer, i as Integer
  Dim recenica() As String, path As string, sadrzaj as String,fileName as string

  If Text1.Text="" Then Exit Sub 'nije uneta fraza za pretrazivanje

  fn = freeFile  
  path = Replace$(app.path & "\arhiva","\\","\")

  sadrzaj="." 'zbog splita dole (da ne bi dobili nedefinisan array koji ce izazvati gresku priliko koriscenja bound funkcija)

  If Combo1.Text = "" Then 'nista nije izabrano, pretrazuju se sve arhive
    For i=1 to 570
       fileName=path & "\arhiva" & cstr(i) & ".txt"
       'za svaki slucaj da proverimo da li fajl postoji
       if dir(fileName) <> "" Then 'postoji:
         open fileName for binary as #fn
           'iscitavamo sadrzaj i dodajemo promenjivoj
           sadrzaj=sadrzaj & Input(LOF(fn),#fn) 
         close #fn
       end if
    Next
  Else 'izabrana je samo jedna arhiva
    'pod uslovom da su u combou arhiva1, arhiva2... (bez .txt):
    fileName=path & combo1.text & ".txt" 
    open fileName for binary as #fn
      'iscitavamo sadrzaj
       sadrzaj=Input(LOF(fn),#fn) 
    close #fn
  Endif

  'sada kada imamo sadrzaj podelimo ga po recenicama:
  recenica=split(sadrzaj,".")

  text3.text="" 'resetujemo polje sa rezultatima

  'sada trazimo zadatu frazu
  for i=lbound(recenica)+1 to ubound(recenica)  '+1 jer je prvi uvek prazan (sadrzaj uvek pocinje sa tackom)
    if instr(1,recenica(i),text1.text)>0 then 'sadrzi se fraza u recenici
      text3.text=text3.text & trim(recenica(i)) & "." & vbCrLF
    endif
  next

End Sub

to bi bilo to, samo pazi da ti je text3 multiline property podesen na true i moj predlog ti je da combo-u stavis style na DropdownList i da dodas jedan item tipa "Sve arhive" (ali u tom slucaju bi trebao gore da zamenis ono If combo1.text="" u if combo1.text="Sve arhive")

hm, kucam iz glave a odavno (vec tri-cetiri meseca) nisam ni prisao vb-u tako da sam malo sardjao :) ali mislim da je to to...

poz
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Skolski projekat 19.01.2006. u 12:37 · pre 253 meseca #3
Ok tnx cojk ev idem da ovo probam pa cu javiti kakav je rezultat!
A sto se tice tih recenica one su definisane u arhivama na sledeci nacin
npr za arhivu 55
Arhiva55.1 Ovdje ide prva recenica
Arhiva55.2 Ovdje ide druga renica
.
.
.
aj pa cujemo se opet
Re: Skolski projekat 20.01.2006. u 10:32 · pre 253 meseca #4
ako je u takvom format onda bi trebalo malo prepraviti kod:
Code:

Private Sub Command1_Click()
  Dim fn As Integer, i as Integer
  Dim recenica() As String, path As string, sadrzaj as String,fileName as string

  If Text1.Text="" Then Exit Sub 'nije uneta fraza za pretrazivanje

  fn = freeFile  
  path = Replace$(app.path & "\arhiva","\\","\")

  If Combo1.Text = "" Then 'nista nije izabrano, pretrazuju se sve arhive
    For i=1 to 570
       fileName=path & "\arhiva" & cstr(i) & ".txt"
       'za svaki slucaj da proverimo da li fajl postoji
       if dir(fileName) <> "" Then 'postoji:
         open fileName for binary as #fn
           'iscitavamo sadrzaj i dodajemo promenjivoj
           sadrzaj=sadrzaj & Input(LOF(fn),#fn) 
         close #fn
       end if
    Next
  Else 'izabrana je samo jedna arhiva
    'pod uslovom da su u combou arhiva1, arhiva2... (bez .txt):
    fileName=path & combo1.text & ".txt" 
    if dir(fileName) <> "" Then 'postoji:
      open fileName for binary as #fn
        'iscitavamo sadrzaj
         sadrzaj=Input(LOF(fn),#fn) 
      close #fn
    else
      exit sub
   endif
  Endif

  'sada kada imamo sadrzaj podelimo ga po recenicama:
  recenica=split(sadrzaj & vbcrlf, vbcrlf)

  text3.text="" 'resetujemo polje sa rezultatima

  'sada trazimo zadatu frazu
  for i=lbound(recenica) to ubound(recenica) -1
    if instr(1,recenica(i),text1.text,vbTextcompare)>0 then 'sadrzi se fraza u recenici
      text3.text=text3.text & trim(recenica(i)) & vbCrLF
    endif
  next

End Sub
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Skolski projekat 24.01.2006. u 11:30 · pre 252 meseca #5
Pozdrav
Isprobao sam ovaj kod ali ne pretražuje kad izaberem samo jednu od baza a kada izaberem sve baze onda ispisuje samo jednu recenicu u kojoj nadje traženi rezultat!Pokusao sam malo da to cackam ali ne ide ne znam u cemu bi mogao biti problem!
Nadam se da nisam dosadan :)
Re: Skolski projekat 24.01.2006. u 12:24 · pre 252 meseca #6
pa da, izgresio sam na par mesta jer sam pisao iz glave :)
evo prepravljenog:
Code:

Private Sub Command1_Click()
  Dim fn As Integer, i as Integer
  Dim recenica() As String, path As string, sadrzaj as String,fileName as string

  If Text1.Text="" Then Exit Sub 'nije uneta fraza za pretrazivanje

  fn = freeFile  
  path = Replace$(app.path & "\arhiva\","\\","\")

  If Combo1.Text = "" Then 'nista nije izabrano, pretrazuju se sve arhive
    For i=1 to 570
       fileName=path & "arhiva" & cstr(i) & ".txt"
       'za svaki slucaj da proverimo da li fajl postoji
       if dir(fileName) <> "" Then 'postoji:
         open fileName for binary as #fn
           'iscitavamo sadrzaj i dodajemo promenjivoj
           sadrzaj=sadrzaj & Input(LOF(fn),#fn) & vbCRlf
         close #fn
       end if
    Next
  Else 'izabrana je samo jedna arhiva
    'pod uslovom da su u combou arhiva1, arhiva2... (bez .txt):
    fileName=path & combo1.text & ".txt" 
    if dir(fileName) <> "" Then 'postoji:
      open fileName for binary as #fn
        'iscitavamo sadrzaj
         sadrzaj=Input(LOF(fn),#fn) 
      close #fn
    else
      exit sub
   endif
  Endif

  'sada kada imamo sadrzaj podelimo ga po recenicama:
  recenica=split(sadrzaj & vbcrlf, vbcrlf)

  text3.text="" 'resetujemo polje sa rezultatima

  'sada trazimo zadatu frazu
  for i=lbound(recenica) to ubound(recenica) -1
    if instr(1,recenica(i),text1.text,vbTextcompare)>0 then 'sadrzi se fraza u recenici
      text3.text=text3.text & trim(recenica(i)) & vbCrLF
    endif
  next

End Sub

to bi trebalo da radi... ali u combo1 treba da ti bude "arhiva1", "arhiva2", ... "arhiva570" (bez .txt!)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Skolski projekat 24.01.2006. u 12:38 · pre 252 meseca #7
ok izvini ako sam bio dosadan ali ako sta znaci bit ce tvoj nick na programu :) ajd onda idem da ovo zavrsim!
Re: Skolski projekat 27.01.2006. u 11:20 · pre 252 meseca #9
bio je jedan problem kod mene kod combo1 al sve je ok sad radi!
Hvala cojk i jos nesto posto ti ovo poprilicno ide trebao bi napisati jedan tutorial za vb sa naglaskom na "pretrazivanje" jer izgleda da je to glavni problem vecini ljudi!

pozdrav pa se cujemo ponovo
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme