Zum Inhalt springen

Schleifendurchläufe zählen bei Do While...Loop in VBS


Empfohlene Beiträge

Geschrieben

Hallo, ich bins schon wieder ;)

Aktuelles Problem: Bei meinem Script sollen die Schleifendurchläufe gezählt werden und somit soll herausgefunden werden wie oft "str2" in "str1" enthalten ist ;-)

Wie und wo muss ich eine Zählvariable einbauen?


Option Explicit


Dim str1

Dim str2

Dim x

Dim ergebnis

Dim anzahlEin


str1 = "Deiner ist ein schöner Text, meiner nicht."

str2 = "ein"

x = 1


ergebnis = InStr (x, str1, str2)


Do While ergebnis <> 0


	x = ergebnis


	ergebnis = InStr (x, str1, str2)


Loop 

Geschrieben
Option Explicit


Dim str1

Dim str2

Dim x

[B]Dim i[/B]

Dim ergebnis

Dim anzahlEin


str1 = "Deiner ist ein schöner Text, meiner nicht."

str2 = "ein"

x = 1

[B]i = 0[/B]


ergebnis = InStr (x, str1, str2)


Do While ergebnis <> 0


	x = ergebnis


	ergebnis = InStr (x, str1, str2)


[B]	i = i + 1[/B]

Loop 

Geschrieben


Option Explicit


Dim str1

Dim str2

Dim x

Dim ergebnis

Dim anzahlEin

[COLOR="Red"]Dim cnt[/COLOR]


str1 = "Deiner ist ein schöner Text, meiner nicht."

str2 = "ein"

x = 1

[COLOR="red"]cnt = 0[/COLOR]


ergebnis = InStr (x, str1, str2)

Do While ergebnis <> 0

	x = ergebnis

	ergebnis = InStr (x, str1, str2)

[COLOR="red"]	if ergebnis > 0 then

		cnt = cnt + 1

	end if[/COLOR]	

Loop 

ach ja, guck doch mal da: http://www.romankoch.ch/capslock/strfun.htm

willst du nicht doch lieber gleich sowas verwenden?

s'Amstel

Geschrieben

@Amstelchen: ich find es persönlich etwas umständlich die zählvariable mit 1 vorzubelegen und nacher zu überprüfen ob der string nochmals gefunden wurde, aber das ist sicher geschmackssache^^.

Geschrieben

@Amstelchen: jetzt wenn du noch die überprüfung inner schleife rausnimmst bin ich glücklich (sonst wird eins zu wenig gezählt da er ja außerhalb der schleife die erste abfrage macht)

was die endlosschleife angeht ... es kann auf jeden fall nicht an der zählervariable (i oder cnt oder wie auch immer) liegen.

Geschrieben
Baue ich es unter die Do...Loop Schleife dann bekomme ich keine Ausgabe :(
ist klar weil die endlosschleife ja nicht fertig wird (egal ob mit oder ohne die ausgabe)

gib in der schleife lieber mal nicht die zählervariable sondern die "ergebnis"-variable aus, dann wirst du auch sehen warum er die schleife nicht verlässt.

Geschrieben

@jasso: und was tue ich am besten dagegen? Die Do...Loop Schleife wird aber doch fertig wenn das Ergebnis 0 ist, wenn Instr. keine Übereinstimmung (mehr) findet, bekommt man als Rückgabe 0.

Geschrieben

Du meinst so?

Dann gibts ne Endlosschleife wo "2" ausgegeben wird

Option Explicit


Dim str1

Dim str2

Dim x

Dim ergebnis

Dim anzahlEin


str1 = "Deiner ist ein schöner Text, meiner nicht."

str2 = "ein"

x = 1


ergebnis = InStr (x, str1, str2)


Do While ergebnis <> 0


	x = ergebnis


	ergebnis = InStr (x, str1, str2)


wscript.echo ergebnis


Loop 

Geschrieben

*auf kopf hau*

der fehler is eigentlich relativ klar nur stand ich wiedermal auf dem schlauch.

probier das:

Option Explicit


Dim str1

Dim str2

Dim x

Dim ergebnis

Dim anzahlEin


str1 = "Deiner ist ein schöner Text, meiner nicht."

str2 = "ein"

x = 1


ergebnis = InStr (x, str1, str2)


Do While ergebnis <> 0


	x = ergebnis + 1


	ergebnis = InStr (x, str1, str2)


Loop 

Geschrieben

*g*

okok hier wirds schön langsam richtig unübersichtlich mit den ganzen ähnlichen codebeispielen.

hier nochmal komplett:

Option Explicit


Dim str1

Dim str2

Dim x

Dim i

Dim ergebnis

Dim anzahlEin


str1 = "Deiner ist ein schöner Text, meiner nicht."

str2 = "ein"

x = 1

i = 0


ergebnis = InStr (x, str1, str2)


Do While ergebnis <> 0


	x = ergebnis + 1


	ergebnis = InStr (x, str1, str2)


	i = i + 1

Loop 

wscript.echo i

Geschrieben

Wenn ich jetzt X ausgeben lasse dann kommen 3 Zahlen (die 3 Positionen an denen sich "ein" befindet) aber jeweils eine Zahl zu hoch, also statt Pos. 2 kommt 3 usw. ;)

Eigentlich ja logisch, aber was lasse ich stattdessenausgeben?

Geschrieben

Vielen Dank Jasso! :) :e@sy Jetzt passt es! :)

Muss ich mir nur noch klar werden wie das alles funktioniert und das alles auch erklären können, dann geht das Beispiel per eMail ab zum Ausbilder ;)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...