Zum Inhalt springen

Smilla

Mitglieder
  • Gesamte Inhalte

    177
  • Benutzer seit

  • Letzter Besuch

Beiträge von Smilla

  1. 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 
    
    

  2. Ich habe jetzt eine Funktion gebastelt die alle Vorkommnisse von "ein" findet.

    So siehts aus:

    Option Explicit
    
    
    Dim str1
    
    Dim str2
    
    Dim x
    
    Dim ergebnis
    
    
    str1 = "Deiner ist ein schöner Text, meiner nicht."
    
    str2 = "ein"
    
    x = 1
    
    
    ergebnis = InStr (x, str1, str2)
    
    
    Do Until ergebnis = 0
    
    
    	x = ergebnis
    
    	ergebnis = instr (x, str1, str2)
    
    
    Loop

    Aber nun, wie lasse ich die Funktion die Vorkommnisse zählen und dann auch noch ausgeben???

  3. Wenn ich will das die Instr. Funktion alle Vorkommnisse von "ein" in meinem Suchstring (siehe oben) entdeckt und mir die Positionen zurück gibt, muss ich da auch eine extra Funktion bauen oder ght das direkt mit instr.?? :confused:

  4. Ich hab mich jetzt schon mehrmals an der Replace Funktion in VBScript versucht, aber nie klappt es, wo liegt der Fehler?? :confused:

    Dim str1
    
    Dim str2
    
    
    str1 = "Deiner ist ein schöner Text, meiner nicht"
    
    str2 = "ein"
    
    str3 = "X"
    
    
    Replace str1, str2, str3
    
    
    WScript.Echo str1

  5. Hallo,

    also die Instr()-Funktion kenne ich, klappt auch! :)

    Aber wie kann ich mit der Instr. Funktion herausfinden wie oft der Suchstring im ZuDurchsuchendenString enthalten ist?

    Beispiel: String: "Deiner ist ein schöner Satz, meiner nicht." wie kann ich herausfinden wie oft darin "ein" vorkommt, ist ja insg. 3 mal! ;)

  6. Danke schonmal :) Soll halt pro Begriff ca. 1/4 Seite haben...

    Hab schonmal folgendes geschrieben: ;)

    For…Next Schleife

    In der For-Next Schleife läuft eine Variable von einem Start- zu einem Zielwert. Sobald die Schleife den Zielwert erreicht hat, springt das Programm aus der Schleife und führt die nachstehenden Anweisungen aus. Syntax der For-Next Schleife:

    For Zähler = Startwert To Zielwert [Step Schrittweite]
    
    	Anweisungen
    
    Next
    Zähler ist eine Variable, Start- und Zielwert sind beides Zahlen. Mit Step wird die Schrittweite angegeben, Step ist Optional und muss nur verwendet werden wenn anders als +1 gezählt werden soll. Also z.B. in zweiter Schritten (+2). Es kann auch rückwärts gezählt werden, dann einfach die Schrittweite mit Minus davor (z.B. -1) angeben. Die For-Next Schleife eignet sich dann am besten, wenn man von Anfang an genau weiß wie oft die Schleife durchlaufen werden soll. Ist die Anzahl der Durchläufe noch nicht sicher, ist eine Do…Loop Schleife besser. Foreach Die Foreach Schleife ist mit der For…Next schleife vergleichbar. Der Unterschied ist das die Foreach Schleife keinen Schleifenzähler hat, deswegen kann man als Programmierer auch nicht festlegen wie oft die Schleife durchlaufen soll. Die Schleife wird z.B. bei einer Arrayvariablen (oder auch einer anderen „Sammlung“) für jedes Element einmal ausgeführt. Das ist hilfreich wenn man die Anzahl der Elemente eines Arrays nicht genau kennt. While-Schleife Eine While-Schleife wird solange ausgeführt bis die Schleifenbedingung True also Wahr wird. Die Schleifenbedingung kann entweder nach Do oder erst nach Loop stehen. Je nach dem an welcher Stelle die Bedingung steht, wird so vor jedem Schleifendurchlauf (bei Do) oder nach jeden Schleifendurchlauf (bei Loop) geprüft. Do…Loop Bei der Do…Loop Schleife handelt es sich eigentlich um 3 Schleifentypen. Am Anfang jeder Do…Loop Schleife steht das Do, am Ende das Loop, dazwischen stehen die Anweisungen, diese bilden den „Schleifenkörper“. Die Do…Loop Schleife kann Kopfgesteuert oder Fußgesteuert sein. Die Unterscheidung liegt in der Formulierung der Austrittsbedingung. Mit While oder Until wird eine Bedingung überprüft. Um eine Do…Loop Schleife vorzeigt abzubrechen, reicht die Anweisung Exit Do. Kopfgesteuerte Schleifen Bei einer kopfgesteuerten Schleife steht die Bedingung in der Kopfzeile d.h. die Bedingung wird vor jedem Durchlauf geprüft und solange ausgeführt wie sie erfüllt ist. Ist die Bedingung nie erfüllt, wird die Schleife erst gar nicht betreten. Die Kopfgesteuerte Schleife wird meist mit While (=während) eingeleitet. Fußgesteuerte Schleifen Die Fußgesteuerte Schleife ist das Gegenstück zur Kopfgesteuerten Schleife. Die Bedingung steht hier nicht am Anfang der Schleife sondern am Ende. Die Anweisungen werden erst abgearbeitet bevor dann die Bedingung geprüft wird. Die Fußgesteuerte Schleife wird aber in jedem Fall betreten. Sie wird meist mit Do-While (=ausführen-während) eingeleitet. If Eine If-Abfrage prüft einen bestimmten Sachverhalt ob er Wahr (True) ist und macht dann etwas, also z.B.
    If 4 + 1 = 5 then
    
      Msgbox ("Richtig!")
    
    End if
    In dem Beispiel wird abgeprüft ob (if) 4 + 1 = 5, wenn das so ist dann (then) soll eine MsgBox mit dem Text „Richtig!“ ausgegeben werden. Wenn man nun die 5 duch eine 6 ersetzten würde, wäre der Sachverhalt ja nicht mehr Wahr, dann wird die If-Abfrage einfach übergangen. If… Else Um das oben beschrieben Problem (das Übergehen der If-Abfrage) zu vermeiden, kann man nach der Anweisung noch ein Else einsetzen. Beispiel:
    If 4 + 1 = 6 then
    
      Msgbox ("Richtig!")
    
    Else
    
      Msgbox ("Falsch!")
    
    End If
    Wenn also nun die If-Bedingung nicht zutrifft, wird die Anweisung die nach dem Else (~ alles andere) steht ausgeführt. In diesem Fall würde dann die MsgBox „Falsch!“ ausgegeben, da die If-Bedingung nicht zutrifft. Sub Eine Prozedur beginnt immer mit dem Wort Sub und endet mit End Sub, die dazwischen liegenden Aktionen werden dann ausgeführt. Hinter dem Sub folgt dann der Prozedurname, dahinter können in Klammern Argumente (Konstanten, Variablen, Ausdrücke) angegeben werden die die Prozedur übernehmen soll. Will man keine Argumente angeben, muss man hinter den Prozedurnamen ein leeres Klammernpaar () setzen. Der Unterschied zu einer Funktion liegt darin das Prozeduren keinen Rückgabewert liefern, Funktionen schon. Aufgerufen werden Prozeduren so wie Funktionen einfach über ihren Namen und die evtl. vergebenen Parameter. Function Eine Funktion ist ähnlich aufgebaut wie eine Prozedur, nur das bei der Function die auszuführenden Aktionen zwischen Function und End Function stehen. Hinter dem Function steht dann der Funktionsname und dahinter können dann, wie bei einer Sub auch, Argumente angegeben werden, hat die Funktion keine Argumente, muss man hinter den Funktionsnamen ein leeres Klammernpaar () setzen. Eine Funktion liefert im Gegensatz zu einer Prozedur einen Rückgabewert. Das Aufrufen einer Funktion funktioniert genauso wie das Aufrufen einer Prozedur (Sub). True / False True (=Wahr) und False (=Falsch) werden meistens für If-Abfragen oder Schleifen verwendet. Zum Beispiel das eine Schleife solange ausgeführt wird, solange eine bestimmte Bedingung wahr / bzw. falsch ist. Oder bei einer If-Abfrage die festlegt „wenn diese Bedingung wahr ist, dann mach das“. Instr() Die Instr-Funktion gibt das erste Zeichen einer Zeichenfolge (String) in einer anderen Zeichenfolge wieder. (Mit der Instr-Methode kann man nach bestimmten Zeichen innerhalb einer Zeichenkette (String) suchen).
    Instr ([Start,] Zeichenfolge 1, Zeichenfolge 2, [Vergleich])
    Start (Optional) gibt an ab welchem Zeichen gesucht werden soll, wird nichts angegeben, wird ab dem ersten Zeichen gesucht. Das Argument Vergleich ist ebenfalls Optional, wenn dieses aber angegeben wird, muss auch das Argument Start angegeben werden. Zeichenfolge 1 gibt den String an der durchsucht werden soll und die Zeichenfolge 2 gibt den String an, nach dem gesucht werden soll. Die Optionale Angabe Vergleich gibt an wie verglichen werden soll. Not Not wird verwendet um etwas zu verneinen. Verwender man Not in Kombination mit True oder False so ergeben die beiden Werte jeweils das Gegenteil, also Not True = False (~nicht Wahr = Falsch) und Not False = True.(~nicht Falsch = Wahr). Replace() Mit der Replace-Funktion kann man einen Teilstring innerhalb eines Strings nach Vorgabe ersetzen.
    Replace (Ausdruck, suchen, ersetzen durch,  [starten, [Anzahl, [vergleichen]]])

    Ausdruck (Strings) gibt die Zeichenfolge an in der etwas ersetzt werden soll, Suchen ist die Zeichenfolge nach der gesucht werden soll. Der Parameter Ersetzen durch (String) legt die Zeichenfolge fest die als Ersatz verwendet werden soll. Starten, Anzahl und Vergleichen sind Optional und vom Datentyp Integer. Starten legt fest an welcher Position die Suche beginnen soll, wird Start nicht angegeben, beginnt die Suche beim ersten Zeichen des Strings. Anzahl legt fest wie viele Ersetzungen durchgeführt werden sollen, wird Anzahl nicht angegeben, werden alle möglichen Zeichenfolgen ersetzt.

  7. Also ich muss folgende Begriffe ausarbeiten, erklären, kurzer Text dazu, usw.

    Wer kann mir weiterhelfen?? Ich suche natürlich parallel auch in Google! ;)

    Ich notiere mal alle Begriffe und wer zu einem Begriff was weis kann es mir ja schreiben! :)

    For-Next Schleife

    Foreach

    While-Schleife

    Do...Loop

    Fussgesteuerte Schleifen

    Kopfgesteuerte Schleifen

    if

    if...else

    sub

    function

    NOT

    TRUE / FALSE

    instr()

    replace()

    nothing

    Der Begriff "Objekt"

    :mod:

    :) :)

  8. So, eines Problem erfolgreich gelöst...

    ...und das nächste folgt sogleich... :D:( Mist...

    Und zwar, wenn ich mit VBscript eine Datei erstelle, kann ich in die ja auch reinschreiben (bsp. Textdatei, HTMLDatei). Bei ner HTML-Datei schreibe ich ja dann

    write.WriteLine ("<html>") Hier meinen Code dazwischen ("</html>")
    Wie mache ich das wenn ich CSS schreiben muss?? Kann ich da schreiben
    write.WriteLine ("<css>")

    ??

    Wahrscheinlich nicht... oder?

    Wie sage ich dem Script dann das ich nun CSS Schreiben will??? :confused:

    Hoffe auf schnelle Hilfe! :)

    Viele Liebe Grüße

    Lisa

    :e@sy

  9. Danke euch!! :D Jetzt klappt es! (Was würde ich ohne dieses Forum nur machen???!?! ;) )

    @Boro: Du hattest Recht, ich habe die Sub nirgends aufgerufen, aber auch als ich das gemacht hab ging es nicht! Irgendwann kam die Fehlermeldung das die Erlaubnis verweitert wäre usw.

    @Amstelchen: Du hast recht, in meiner Aufgabe stand nur das die Datei im Browser geöffnet werden soll!

    Habe es jetzt so abgeändert!

    Danke nochmal euch allen!! :e@sy :e@sy :e@sy

  10. Das müsste doch eigentlich schon so gehen, oder?

    Nur warum gehts nicht? :confused:

    Option Explicit
    
    
    'Globale Variablen
    
    Dim HTMLfilename
    
    HTMLfilename = "U:\LisaJ_Scripte\adressverwaltung\adressen.html"
    
    
    
    'Öffnen der HTML-Seite und anzeigen im Internet Explorer
    
    Sub OpenHTMLfile
    
    	Dim Shell
    
    	Set Shell = CreateObject("WScript.Shell")
    
    	Shell.Run ("iexplorer.exe " & HTMLfilename)
    
    End Sub

  11. Function SucheInArray()
    
    	Dim i
    
    	Dim arrTempAdresse()
    
    	Dim iArrayElem2
    
    	iArrayElem2 = 0
    
    
    	For i = 1 To UBound(arrAdresse, 2)									'von 1 bis zum höchsten Index-Wert
    
    		If strSuche = arrAdresse(1,i) Then								'Wenn der Suchbegriff = dem Feld (1,i) im Datenarray ist,dann...
    
    			iArrayElem2 = iArrayElem2 + 1								'iArrayElem2 um 1 erhöhen
    
    			WScript.Echo "iArrayElements:" & iArrayElem2 & vbNewLine	
    
    			ReDim Preserve arrTempAdresse(6, iArrayElem2)				'Deklaration eines dynamischen Array
    
    			arrTempAdresse(0, iArrayElem2) = arrAdresse(0,i) 
    
    			arrTempAdresse(1, iArrayElem2) = arrAdresse(1,i) 
    
    			' arrAdresse(1,iArrayElements) = arTemp(1)
    
    			' arrAdresse(2,iArrayElements) = arTemp(2)
    
    			' arrAdresse(3,iArrayElements) = arTemp(3)
    
    			' arrAdresse(4,iArrayElements) = arTemp(4)
    
    			' arrAdresse(5,iArrayElements) = arTemp(5)
    
    
    		End If 
    
    	Next

    Ist jetzt n Codeausschnitt, wie sage ich da das WENN eine Übereinstimmung gefunden wurde, die entsprechende Zeile in ein neues Temporäres Array gespeichert werden soll?

  12. Also so siehts jetzt aus (nur die Suche, mache dafür n extra Programm, ist sinnvoller finde ich) :)

    Option Explicit 
    
    
    'Globale Variablen
    
    Dim strSuche
    
    Dim sAdressFilePath
    
    Dim arrAdresse()'Array
    
    Dim iArrayElements
    
    iArrayElements = 1
    
    ReDim preserve arrAdresse(6,1)
    
    
    sAdressFilePath = "U:\LisaJ_Scripte\adresse.txt"
    
    '=================================================================
    
    ' Main
    
    '=================================================================
    
    
    'InputBox mit Frage nach Suchwort
    
    strSuche = InputBox ("Geben Sie bitte Ihren Suchbegriff ein!" , "Suchfunktion")
    
    
    'Datei einlesen
    
    ReadEntireFile(sAdressFilePath)
    
    
    
    '=================================================================
    
    ' Functions und subs
    
    '=================================================================
    
    
    'Erzeugt aus dem Inhalt der Datei ein tolles Array
    
    Sub AddToArray(sLine)
    
    	Dim arTemp 'Variable für Temporäres Array
    
    	iArrayElements = iArrayElements + 1
    
    	WScript.Echo "iArrayElements:" & iArrayElements & vbNewLine
    
    	ReDim Preserve arrAdresse(6, iArrayElements)
    
    
    	arTemp = Split(sline, ";")
    
    	'WScript.Echo UBound(arTemp)
    
    	arrAdresse(0,iArrayElements) = arTemp(0)
    
    	arrAdresse(1,iArrayElements) = arTemp(1)
    
    	arrAdresse(2,iArrayElements) = arTemp(2)
    
    	arrAdresse(3,iArrayElements) = arTemp(3)
    
    	arrAdresse(4,iArrayElements) = arTemp(4)
    
    	arrAdresse(5,iArrayElements) = arTemp(5)
    
    
    	Dim i
    
    	For i = 1 To UBound(arrAdresse,2)
    
    		WScript.Echo arrAdresse(0,i)
    
    		WScript.Echo arrAdresse(1,i)
    
    		WScript.Echo arrAdresse(2,i)
    
    		WScript.Echo arrAdresse(3,i)
    
    		WScript.Echo arrAdresse(4,i)
    
    	    WScript.Echo arrAdresse(5,i)
    
    	Next
    
    
    End Sub
    
    
    'Laden der Daten
    
    Function ReadEntireFile(strAdressFilePath)
    
       Const ForReading = 1
    
       Dim fso, theFile, retstring
    
       Set fso = CreateObject("Scripting.FileSystemObject")
    
       Set theFile = fso.OpenTextFile(strAdressFilePath, ForReading, False)
    
       Do While theFile.AtEndOfStream <> True
    
          AddToArray(theFile.ReadLine)
    
       Loop
    
       theFile.Close
    
       ReadEntireFile = retstring
    
    End Function
    
    

    Wenn ich als Suchbegriff jetzt beispielsweise "Hans" (also Vorname) eingebe, dann sollen alle Einträge mit dem Suchbegriff verglichen werden und es soll nach Übereinstimmungen gesucht werden, (mit ner For...Next Schleife).

    Wenn dann eine Übereinstimmung gefunden wurde soll die komplette Adresszeile in ein temporäres Array kopiert werden, wenn alle Einträge auf Übereinstimmung geprüft wurden, soll das Ergebnis ausgegeben werden.

    So, wie spreche ich in einer Schleife den Suchbegriff der eingegeben wurde an?

    Woher weis der Rechner das er dann nur bsp.weise in der Spalte Name suchen soll??

    :confused:

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...