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

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Candy
Level 1
Level 1
Příspěvky: 99
Registrován: prosinec 05
Pohlaví: Nespecifikováno
Stav:
Offline
Kontakt:

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

Příspěvekod Candy » 18 kvě 2009 17:20

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?[

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

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

Příspěvekod navstevnik » 23 kvě 2009 09:26

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


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů