# string auslesen und vergleichen



## dynamofan (23. April 2008)

Hallo! Ich hab schon wieder ein Problem....

Und zwar möchte ich einen Script schreiben der aus der "list.txt" mir die EINE Zeile ausliest und dann diesen String vergleicht ob er in der "datei.txt" schon vorhanden ist.
Wenn Ja dann soll er 30sec warten und erneut prüfen.
Wenn Nein soll aus der "list.txt" die nächste Zeile ausgelesen werden und das ganze beginnt wieder von vorn.    ;-)

Habs jetzt soweit das er mir alle Zeilen der "list.txt" in einer msgbox ausgibt. (siehe Script)


```
Option Explicit
Dim FSO, DateiInhalt, Zeile, Inhalt
Const Dateiname="plist.txt"
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(DateiName) Then
    ' Ja, also eine Verbindung herstellen
    Set DateiInhalt = FSO.OpenTextFile(Dateiname)
    Do Until DateiInhalt.atEndOfStream
        Zeile = DateiInhalt.ReadLine + vbcrlf
        Inhalt=Inhalt + Zeile + vbcrlf
    Loop
    DateiInhalt.Close
    WScript.Echo Inhalt
Else
    WScript.Echo "Datei " & Dateiname & " nicht gefunden!"
End If
```

Die Abfrage ob die Datei vorhanden ist oder nicht muss nicht zwingend rein.
Hoffe ihr könnt mir weiterhelfen wie ich den rest auch noch hinbekomme!

Mfg der dynamofan


----------



## Alex F. (23. April 2008)

Wo ist denn deine Frage?

Benutze bitte für Code die Tags  [code=vb][/code] oder [code][/code]  sowie ein paar Einrückungen Dein Code ist extrem unleserlich.
Grüsse bb


----------



## dynamofan (24. April 2008)

brainbyte hat gesagt.:


> Wo ist denn deine Frage?
> 
> Benutze bitte für Code die Tags  [code=vb][/code] oder [code][/code]  sowie ein paar Einrückungen Dein Code ist extrem unleserlich.
> Grüsse bb



Vielen Dank für den Hinweis! Habs gleich korrigiert.
Und meine Frage ist die, ob mir jemand bei der lösung meines Problems behilflich sein könnte. 
Auch wenn jemand eine Teillösung weiß bitte posten.
z.B. würde mich schon weiterhelfen, wenn jemand weiß wie man eine Zeile aus einer .txt auslesen kann.


Mfg der dynamofan


----------



## Alex F. (24. April 2008)

Wenn du deine Textdatei mit *.ReadAll* einliest hast du alles in einer Variablen drin (ist zwar vielleicht etwas Speicherintensiv kommt aber auf die art der textdatei an)

mit 

instr 

Kannst du dann schauen ob dein gesuchte Variable im zu durchsuchenden Text drin ist. 

Für die 30 sec. Wartezeit solltest du dir die Sleep api anschauen und die Loops mit ja und nein sollten eigentlich nicht dein Problem sein oder? Wie bereits oben angedeutet ich habe dein exactes Problem noch nicht erkannt

Gruss bb


----------



## dynamofan (24. April 2008)

brainbyte hat gesagt.:


> Wenn du deine Textdatei mit *.ReadAll* einliest hast du alles in einer Variablen drin (ist zwar vielleicht etwas Speicherintensiv kommt aber auf die art der textdatei an)
> 
> mit
> 
> ...



OK danke schonmal.
Das sleep ist nicht das Problem, eher würde ich gern wissen wollen ob es einen befehl gibt der mir nur die erste zeile der txt einliest.


Mfg der dynamofan


----------



## Alex F. (24. April 2008)

Wenn du das 

```
DateiInhalt.ReadLine
```
 
nur einmal machst hast du nur die erste Zeile 

Grüsse bb


----------



## dynamofan (24. April 2008)

dynamofan hat gesagt.:


> OK danke schonmal.
> Das sleep ist nicht das Problem, eher würde ich gern wissen wollen ob es einen befehl gibt der mir nur die erste zeile der txt einliest.
> 
> 
> Mfg der dynamofan



So, habs jetz hinbekommen das er mir nur eine Zeile ausgibt.
Der nächste Schritt ist der vergleich des ausgelesen Strings mit dem String aus der plist.txt . ;-)


----------



## Alex F. (24. April 2008)

Wie oben schon beschrieben instr:

```
If InStr(1, ersteZeile, "suche", vbTextCompare) = 0 Then
        MsgBox ("nix da!")
    Else
        MsgBox ("gefunden")
    End If
```

Grüsse bb


----------



## dynamofan (24. April 2008)

OK nochmals Vielen Dank! Jetzt bin Ich wieder einen Schritt weiter.
Muss trotzdem nochmal fragen: Wie sieht die genaue Syntax für den Sleep Befehl aus? Ich hab dir mal meine If Abfrage gepostet, vll. könntest du den Sleep Befehl im Else-Zweig einarbeiten.


```
If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then
        MsgBox ("nix da!")
    Else
      WScript Sleep 3000 'so funktionierts nicht
    End If
```

Mfg der dynamofan


----------



## Alex F. (24. April 2008)

Deklaration im allgemeinen Teil 

```
Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
```

und dann nur der Aufruf 

```
Sleep 30 000 ' da du ja 30 Sec warten wolltest
```

Grüsse bb


----------



## dynamofan (24. April 2008)

brainbyte hat gesagt.:


> Deklaration im allgemeinen Teil
> 
> ```
> Public Declare !!Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)
> ...



Wenn ich dies bei mir einfüge kommt: 
_Kompilierungsfehler in Microsoft VBScript: Anweisungsende erwartet_
Die Stelle wo der Fehler liegt hab ich dir oben mit !! markiert.

Mfg der dynamofan


----------



## Alex F. (24. April 2008)

Sorry in vbs geht es direkt über wscript


```
WScript.Sleep 2000
```


----------



## dynamofan (24. April 2008)

OK vielen Dank! Bis dorthin funktionierts schon.

Jetzt kommt aber (meiner Meinung nach) der schwierigere Teil:
Als "then" soll keine "Msgbox" erfolgen, sondern es soll aus der "list.txt" die nächste darunterstehende Zeile ausgelesen werden und die Überprüfung von vorn beginnen.


Mfg der dynamofan

Kannst ja mal deine Meinung zu meiner theoretischen Lösung sagen:
in der txt einen pointer setzen, aus dem "then" mit "go to"o.ä. nach oben in strInhalt springen und den Pointer+1

Und hier nochmal mein kompletter Script zur Übersicht:

```
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\...\Desktop\list.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben
strInhalt = objTextStream.ReadLine
    If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then
        MsgBox ("nix da!")
    Else
        WScript.Sleep 30000 '+++warte 30 Sec
    End If
' +++ Textstream schliessen
objTextStream.Close
```

Also wie gesagt, nur theoretisch, praktisch weiß ich ne obs so geht.


----------



## Alex F. (24. April 2008)

Goto finde ich immer schlecht weil es die Sache unübersichtlich macht also hier jetzt mein Vorschlag:


```
abbruch = false
while not abbruch 
     strInhalt = objTextStream.ReadLine 
      If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then
        if obTextStream.atEndOfStream then
            msgbox("Suchtext nicht gefunden")
        end if 
    Else
      abbruch = true 
    end if 
wend
WScript.Sleep 30000 '+++warte 30 Sec
```


Beachte das instr als rückgabe eine Zahl liefert! Das birgt noch etwas Fehlerpotential
Grüsse bb

PS: auch ich freue mich über eine positive Bewertung wenn ich dir geholfen haben sollte


----------



## dynamofan (25. April 2008)

brainbyte hat gesagt.:


> Goto finde ich immer schlecht weil es die Sache unübersichtlich macht also hier jetzt mein Vorschlag:
> 
> 
> ```
> ...



Hallo,
könntest du mir vielleicht noch einmal den code erklären?
Ich hab dir oben im Script mal ein par Notizen hinzugefügt, kannst mir ja mal bitte eine Rückmeldung geben in wie fern diese richtig sind.

Mfg der dynamofan


----------



## Alex F. (25. April 2008)

```
abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
        If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then
            If obTextStream.atEndOfStream Then ' Falls das Ende des Files erreicht wurde
                MsgBox ("Suchtext nicht gefunden") 'Warnmeldung
            End If 'schliest das letzte If !
        Else
            ' gefunden also while Schleife verlassen und 30sec. warten
            abbruch = True ' Setzt die Abbruch bedingung
        End If
    Wend ' springt im script nach oben? zum While
    WScript.Sleep 30000 '+++warte 30 Sec
```

So  jetzt habe ich mal meine kommentare dran gesetzt ;-) 

Grüsse bb


----------



## dynamofan (25. April 2008)

Sehr schön!
Soweit funktionierts jetzt schon.

Funktioniert es auch das es mir nach nicht nur einem Suchwort sucht sondern nach mehreren? z.B. die getrennt mit Symikolon o.ä. getrennt stehen.

Also ich sag es gleich ganz konkret was am Ende entstehen soll:
Der Script soll überprüfen ob 4 Prozesse die in der plist.txt stehen zur Zeit (also vergleichen mit einer anderen txt, wo die prozesse drinstehen) laufen, wenn ja warten (funktioniert ja schon), wenn nein nächsten Prozess aus der list.txt überprüfen (funktioniert ja auch schon).

Also müsste man theoretisch 4 Suchwörter einsetzen. Aber das funktioniert wahrscheinlich nicht, denk ich, oder?

Mfg der dynamofan

PS: wenn der Script dann fertig ist geb ich eine richtig gut Bewertung für dich ab!


----------



## Alex F. (25. April 2008)

Wenn du vier Texte suchen willst musst du leider auch vier mal suchen. 

Man kann dann vielleicht die Schleife aber so umbauen, das er die datei nur einmal durchliest.

Grüsse bb


----------



## dynamofan (25. April 2008)

brainbyte hat gesagt.:


> Wenn du vier Texte suchen willst musst du leider auch vier mal suchen.
> 
> Man kann dann vielleicht die Schleife aber so umbauen, das er die datei nur einmal durchliest.
> 
> Grüsse bb



Aha, könntest du mir da vielleicht ein bischen auf die sprünge helfen? Ich hab leider noch keinen Plan wie das dann aussehen müsste.

Mfg der dynamofan

Nochmal ganz kurz das Ziel: Script soll vermeiden das mehr als 4 Prozesse die in der plist.txt stehen gleichzeitig laufen.


----------



## Alex F. (25. April 2008)

Da du nach vier unterschiedlichen Prozessen suchst, speicher dir deinen Fund in einer Variablen ( am besten als Zahl ) BSP 

cmd = 1
prozess2 = 2 
Prozess3 = 4 
und Prozess4 = 6

dann machst du deine Instr. abfragen :

```
If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) <> suche then
         gefunden = 1
```
Achtung hier habe ich = gegen <> getauscht weil es einfacher ist so rum 

```
If InStr(1, strInhalt, "process2", vbTextCompare) <> suche then
         gefunden = gefunden  and 2
```
...
Dann musst du die Variable Abbruch setzten 

```
abbruch = (gefunden = 13) ' du willst ja nur abbrechen wenn alle 4 Prozesse da sind
if not abbruch then
 abbruch = obTextStream.atEndOfStream 'Textfile zu ende also auch abbruch
end if
```

Grüsse bb

PS: Ich hoffe du kannst mir folgen. ;-) Vielleicht mache ich das auch einfach schon zu lange


----------



## dynamofan (25. April 2008)

Aha die Idee jeden Prozess eine Variable zuzuweisen hatte ich auch schon, wusste dann aber nicht weiter.

Vieleicht könntest du mir deine Änderung einmal in den gesamtscript übernehmen und dann versuch ich nochmal dies nachzuvollziehen.


Mfg der dynamofan

Hier nochmal der bisherige Script:

```
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\Dokumente und Einstellungen\Janze_Alexander\Desktop\plist.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben

abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
        If InStr(1, strInhalt, "backup4.cmd", vbTextCompare) = suche Then
            If objTextStream.atEndOfStream Then ' Falls das Ende des Files erreicht wurde
                MsgBox ("Suchtext nicht gefunden") 'Warnmeldung
            End If 'schliest das letzte If !
        Else
            ' gefunden also while Schleife verlassen und 30sec. warten
            abbruch = True ' Setzt die Abbruch bedingung
        End If
    Wend ' springt im script nach oben? zum While
    WScript.Sleep 30000 '+++warte 30 Sec
```


----------



## dynamofan (5. Mai 2008)

Hallo,
könntest du deine Änderungen vielleicht in den Script übernehmen? Ich habs auch schon probiert zu integrieren, hat aber leider nicht funktionert.

Mfg der dynamofan


----------



## Alex F. (5. Mai 2008)

Hä, ich versteh jetzt nicht wo dein Problem ist ?


----------



## dynamofan (5. Mai 2008)

```
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

backup1.cmd = 1
backup2.cmd = 2
backup3.cmd = 3
backup4.cmd = 4

' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\...\plist.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben

abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
        If InStr(1, strInhalt, "process2", vbTextCompare) <> suche then
         gefunden = gefunden  and 2
            If objTextStream.atEndOfStream Then ' Falls das Ende des Files erreicht wurde
                MsgBox ("Suchtext nicht gefunden") 'Warnmeldung
            End If 'schliest das letzte If !
        Else
            ' gefunden also while Schleife verlassen und 30sec. warten
            abbruch = (gefunden = 13) ' du willst ja nur abbrechen wenn alle 4 Prozesse da sind
			if not abbruch then
 			abbruch = objTextStream.atEndOfStream 'Textfile zu ende also auch abbruch
			end if
        End If
    Wend ' springt im script nach oben? zum While
    WScript.Sleep 30000 '+++warte 30 Sec
```

Hab deine Änderung so übernommen. Da bringt er mir aber einen Fehler. Ich weiß aber z.Z. noch nicht was ich ändern soll das es funktioniert. Vielleicht kannst du mir dabei behilflich sein.

Mfg der dynamofan


----------



## Alex F. (5. Mai 2008)

Ja jetzt verstehe ich. Du willst 4 mal nach dem gleichen Prozess suchen. Zeile 7 - 10 können weg.
in Zeile 23 kommt

```
If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1
```
dann direkt danach

```
If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1
```
und natürlich die anderen beiden

```
If InStr(1, strInhalt, "backup3.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1
If InStr(1, strInhalt, "backup4.cmd", vbTextCompare) = suche Then            
gefunden = gefunden +1
```

in Zeile 30 dann  

```
abbruch = (gefunden >= 4)
```

Grüsse bb


----------



## dynamofan (5. Mai 2008)

Also wenn ich das alles richtig versatanden habe, müsstes dann so aussehen:

```
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\Dokumente und Einstellungen\Janze_Alexander\Desktop\plist.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben

abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
			If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			If InStr(1, strInhalt, "backup3.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			If InStr(1, strInhalt, "backup4.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			
			abbruch = (gefunden >= 4)
            If objTextStream.atEndOfStream Then ' Falls das Ende des Files erreicht wurde
                MsgBox ("Suchtext nicht gefunden") 'Warnmeldung
            End If 'schliest das letzte If !
        Else
            ' gefunden also while Schleife verlassen und 30sec. warten
            abbruch = (gefunden = 13) ' du willst ja nur abbrechen wenn alle 4 Prozesse da sind
			if not abbruch then
 			abbruch = objTextStream.atEndOfStream 'Textfile zu ende also auch abbruch
			end if
        End If
    Wend ' springt im script nach oben? zum While
    WScript.Sleep 30000 '+++warte 30 Sec
```

Bringt aber Fehler in Zeile 38, 5: Anweisungsende erwartet


Mfg der dynamofan


----------



## Alex F. (5. Mai 2008)

1. da fehlen *end if*s (z.b. nach Zeile 19)
2. Zeile 33 muss auch auf >=4 testen

Grüsse bb 

PS: Du bist kurz davor ;-)


----------



## dynamofan (5. Mai 2008)

OK Danke! 
Hab das noch geändert, jetzt will er aber in zeile 35, 9 ein "wend" haben!?

Mfg der dynamofan


----------



## Alex F. (5. Mai 2008)

Klar also noch zu ändern ist:
Zeile 29 da solltest du noch einfügen, das *abbruch = true* gesetzt wird

Zeile 31-37 kann raus! ist noch Code aus einer vorherigen Fassung wird nicht mehr benötigt.

Grüsse bb


----------



## dynamofan (5. Mai 2008)

Also wenn ich jetz 10 Prozessnamen in der datei stehen habe, muss ich für jeden diesen script teil einfügen.

```
If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
				End if
```
Und der Script zählt ja, wenn ich das richtige sehe, für jeden namen den er findet +1 und bricht bei 4 gefundenen übereinstimmungen die schleife ab, wartet 30sec und beginnt erneut.

Bitte korrigier mich wenn ich mich irren sollte. 

Mfg der dynamofan


----------



## Alex F. (5. Mai 2008)

dynamofan hat gesagt.:


> Also wenn ich jetz 10 Prozessnamen in der datei stehen habe, muss ich für jeden diesen script teil einfügen.
> 
> ```
> If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then
> ...


richtig


> Und der Script zählt ja, wenn ich das richtige sehe, für jeden namen den er findet +1 und bricht bei 4 gefundenen übereinstimmungen die schleife ab


richtig


> , wartet 30sec und


richtig 


> beginnt erneut.


 nicht richtig hierfür müsstest du noch eine äussere Endlosschleife basteln. 

BSP:


```
While true ' also immer am besten in Zeile 6
 

  wend ' rücksprung am besten in Zeile 40 / also ans ende
```

grüsse bb

Bitte korrigier mich wenn ich mich irren sollte. 

Mfg der dynamofan


----------



## dynamofan (6. Mai 2008)

```
' +++ Konstanten und Variablen deklarieren
Const fsForReading = 1
Dim strDateiname, strInhalt
Dim objFs           ' FileSystemObject Objekt
Dim objTextStream   ' Textstream Objekt

While true ' also immer am besten in Zeile 6 ' eigentlich überflüssig... siehe Zeile 39
' +++ Datei, deren Inhalt gelesen wird:
strDateiname = "C:\...\plist.txt"
' +++ FileSystemObject anlegen und in fs speichern:
Set objFs = CreateObject("Scripting.FileSystemObject")
' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei
Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading)
' +++ Gesamten Datei-Inhalt lesen und ausgeben

abbruch = False                         ' Setzen der Abbruchbedingung
    While Not abbruch                       'Schleife Beginn
        strInhalt = objTextStream.ReadLine  ' Zeile einlesen
			If InStr(1, strInhalt, "backup1.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
				End if
			If InStr(1, strInhalt, "backup2.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
				End if
			If InStr(1, strInhalt, "backup3.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
				End if
			If InStr(1, strInhalt, "backup4.cmd", vbTextCompare) = suche Then            
				gefunden = gefunden +1
			abbruch = true ' wenn nicht wahr (also nicht 4 übereinstimmungen, dann abbruch
            WScript.Sleep 30000 '+++warte 30 Sec
				End if
			
			if not abbruch then ' wenn 4 gefunden, dann -> zeile 35
 			abbruch = objTextStream.atEndOfStream 'Textfile zu ende also auch abbruch
			end if
    Wend  ' springt im script nach oben zum While
    
wend ' rücksprung am besten in Zeile 40 / also ans ende: eigentlich überflüssig?, da Zeile 37 schon hoch hochspringt
```

So, hab die Änderungen nochmal eingebaut, sowie das Warten nach weiter oben gesetzt und gleichzeitig einpar kommentare dazu geschreiben.

Mfg der dynamofan


----------



## dynamofan (7. Mai 2008)

Hallo,
ich hab mal, zum Testen, in Zeile 35 
	
	
	



```
MsgBox("Test")
```
 eingesetzt. Danach habe ich aus der Liste einen Befehl umbenannt, sodass nur 3 übereinstimmungen sind. Leider bringt er mir nicht die gewünschte Reaktion. 
Vielleicht könntest du nochmal drüberschauhen.

Mfg der dynamofan


----------



## Alex F. (7. Mai 2008)

Was steht eigentlich in Suche drin? 

Die funktion *instr* liefert eine Zahl zurück 0 wenn der gesuchte string *nicht* vorhanden ist und die erste Position des gesuchten strings wenn er vorhanden ist.

Zweitens nach deinem Script bricht er nur ab wenn er das 4. gefunden hat ob die anderen 3 vorhanden waren ist dabei egal (Prüfe hierbei nochmal ob du nicht irgendwo eine If anweisung vergessen hast) 



> Danach habe ich aus der Liste einen Befehl umbenannt, sodass nur 3 übereinstimmungen sind. Leider bringt er mir nicht die gewünschte Reaktion.



Das ist sehr unpräzise was wäre denn die gewünschte Reaktion. (hier hilft vielleicht der Tip von oben) 

Grüsse bb


----------



## dynamofan (8. Mai 2008)

Hallo,
Wie müsste der Script denn aussehen, wenn er 4 übereinstimmungen gefunden hat und danach zur wartezeit springen soll. Ich würde dies mit einer variablen die hochgezählt wird machen, weiß aber leider nicht wie das praktisch aussehen müsste.

PS: 





> Danach habe ich aus der Liste einen Befehl umbenannt, sodass nur 3 übereinstimmungen sind. Leider bringt er mir nicht die gewünschte Reaktion.


Damit meinte ich die von mir eingesetzte MsgBox.


----------



## Alex F. (8. Mai 2008)

Also wie schon geschrieben es ist alles bereits geschrieben du musst es nur noch zusammenfügen. 
z.B. 
http://www.tutorials.de/forum/1607851-post8.html
Ich glaube den Rest solltest du alleine schon schaffen.


----------

