Veröffentlicht 30. November 200519 j 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
30. November 200519 j 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
30. November 200519 j 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
30. November 200519 j @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^^.
30. November 200519 j Wenn ich "i" dann mit wscript.echo ausgeben will dann habe ich eine Endlosschleife erzeugt! P.S. das ist jetzt auf Jasso´s erste Antwort bezogen
30. November 200519 j @jasso: hab ich gleich korrigiert gehabt @smilla: wie, endlosschleife? wo setzt du denn das echo ein? s'Amstel
30. November 200519 j @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.
30. November 200519 j Ich habe oberhalt des "Loop" das wscript.echo eingesetzt. Baue ich es unter die Do...Loop Schleife dann bekomme ich keine Ausgabe
30. November 200519 j 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.
30. November 200519 j @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.
30. November 200519 j probier mal statt Do While ergebnis <> 0 einDo While ergebnis > 0 evtl wird nämlich nicht 0 sondern NULL als ergebnis geliefert.
30. November 200519 j 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
30. November 200519 j *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
30. November 200519 j *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
30. November 200519 j 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?
30. November 200519 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.