Stránka 1 z 1

VB - Jak na porovnávání řetězců?

Napsal: 18 kvě 2009 17:20
od Candy
Chci si vytvořit program, který mi spočítá výskyt zadaného slova v daném textu. Nejdřív si chci nahrát celý text do proměnné, pak z něho pomocí příkazu trim odstranit mezery, dále zadat hledané slovo, spočítat pomocí len počet jeho znaků (např 5), a pak porovnávat to slovo s prvními 5 znaky v proměnné, pak posunout se po slovu a znovu porovnat. Problém je s posledním úkolem, napsal jsem cyklus FOR takto:

Kód: Vybrat vše

For i = 0 To pocetall 
   If slovo = Trim(celytext.Substring(i, pocet)) Then
   vyskyt = vyskyt + 1     
  End If
Next
s tím, že pocetall je celkový počet znaků v textu a proměnou slovo porovnávám s podřetězcem, který začíná na i a obsahuje pocet pismen (promena, kde je ulozen pocet pismen v zadanem slove).Problém je, že během programu mi vyskočí chyba, která ukazuje na druhý řádek for cyklu a říká: Index a délka musí odkazovat na umístění v rámci řetězce. Název parametru: length. Nevíte, kde je chyba?[

Re: VB - Jak na porovnávání řetězců?

Napsal: 23 kvě 2009 09:26
od navstevnik
Zatim nikdo neodpovedel.
Nemam k dispozici VB, ale VBA je odvozeninou, takze nejak takhle:

Kód: Vybrat vše

Option Explicit

Sub VyhledatRetezec()
  Dim Str As String, Poloha As Long, PomPol As Long, Pocet As Long
  Const CestaSoubor As String = "E:\testtext.txt"
  Const CoHledat As String = "procenta"

  Open CestaSoubor For Input As #1
  If Not EOF(1) Then
    Pocet = 0
    Do
      Line Input #1, Str
      Poloha = 1
      Do
        PomPol = InStr(Poloha, Str, CoHledat)
        If PomPol >= Poloha Then
          Poloha = PomPol + Len(CoHledat): Pocet = Pocet + 1
        Else
          Exit Do
        End If
      Loop
    Loop While Not EOF(1)
  End If
  Close #1
  MsgBox "Nalezeno vyskytu: " & Pocet
End Sub