[VB6] Jeśli zmienna zawiera


(Marcinch7) #1

Załóżmy, że mam zmienną "zmienna", jej zawartość to: blebleabcbleble lub bleblebleble. Jak robić aby program "wyszukiwał" ciąg znaków abc i użył ich w IF-ie np.

Dim zmienna

zmienna = blebleabcbleble

if zmienna = dowolnyciagznakowczylibleble + "abc" then

msgbox "zmienna zawiera ciąg znaków abc"

(Utrivv) #2

w VBscript jest funkcja right(string, ilość znaków) która zwraca określoną ilość znaków od prawej strony stringu.

Jeżeli w VB6 też istnieje to wystarczyłoby:

if right(zmienna,3) = "abc" then

Jeżeli źle cię zrozumiałem i chodzi ci o to by sprawdzić czy zmienna zawiera ciąg abc to można użyć pętli

i =1

spr = 0

' tu możesz wpisać string, jak chcesz możesz go podstawić pod jakiś input box :slight_smile:

szukany_string = "1234"

while (spr = 0 or i = (len(zmienna) - (len(szukany_string)))

if mid(zmienna,i, len(szukany_string)) = szukany_string then

costam

costam

spr = 1

end if

i = i + 1

wend


(Marcinch7) #3

A jednak mi nie wyszło :stuck_out_tongue:

Opowiem jaśniej: Mam przycisk i zmienną "zmienna", zmienna "zmienna" może zawierać ciągznaków+abc+ciągznaków lub ciągznaków+123+ciągznaków jeśli zawiera w sobie właśnie 123 lub abc wtedy wyskakuje msgbox.


(Marcinch7) #4

Dobra, poradziłem sobie chyba :stuck_out_tongue:


(Utrivv) #5

ok ale ile razem?

jeżeli tylko te dwa:

i =1

spr = 0

' tu możesz wpisać string, jak chcesz możesz go podstawić pod jakiś input box

szukany_string1 = "1234"

Szukany string2 = "abc"

while (spr = 0 or i = (len(zmienna) - (len(szukany_string2)))

if mid(zmienna,i, len(szukany_string1)) = szukany_string or mid(zmienna,i, len(szukany_string2)) = szukamy_string2 then

costam

costam

spr = 1

end if

i = i + 1

wend

jeżeli tych ciągów ma być więcej to proponuje tablice i pętelkę wew po wszystkich jej wartościach :slight_smile:


(Marcinch7) #6

Tablice?! O tym nie pomyślałem :smiley:


(Lukasz Tolwinski) #7
if InStr( zmienna, szukany_string ) then

msgbox "znaleziony"

a to zadziała ?


(Marcinch7) #8

razorjack , nie działać :stuck_out_tongue:


(Lukasz Tolwinski) #9

ale co nie działać? :slight_smile: co się dzieje ?


(Marcinch7) #10

Poczekaj bo chyba coś zmieniłeś? :slight_smile:


(Marcinch7) #11

A jednak nie działać :stuck_out_tongue:

Dim zmienna

Private Sub Form_Load()

zmienna = hjabchj

If InStr(1, zmienna, abc) Then

MsgBox "znaleziony"

Else

MsgBox "błąd!"

End If

Unload Me

End Sub

na to wyskakuje msgbox "błąd!"


(Lukasz Tolwinski) #12
Dim str As String = "ala ma koteczka"

        Dim szuk As String = "tecz"

        If InStr(str, szuk) Then

            Debug.Print("znalazlem")

        Else

            Debug.Print("nie!")

        End If

działać :slight_smile:


(Marcinch7) #13

Dziękuję Ci bardzo!

EDIT: Powiedz mi jeszcze jak zrobić by komunikatem znalazłem odpowiedziało też na np. wyszukanie ciągu 1234 w jnln1234lkjn i wyszukanie tyu w tyukm :slight_smile:


(Lukasz Tolwinski) #14

nie do końca zrozumiałem Twoje pytanie :slight_smile:

MsgBox "Znalazłem ciąg " + szuk + " w " + str


(Marcinch7) #15

Chodzi o to że zmienna może zawierać też inne znaki do wyszukania :slight_smile:


(Utrivv) #16

zamiast abc podstaw nowy string

wtedy tak samo tyle że

If InStr(1, zmienna, string_z_abc) Then

Myślę że było by łatwiej gdybyś od razu powiedział o co chodzi, co ma ten programik robić, do czego go potrzebujesz itp :slight_smile: