viele Texte speichern

  • Ich komm leider noch nicht
    an den reinen Quelltext ran:

    [autoit]


    #include <Array.au3>
    #include <String.au3>
    Dim $avArray
    $Var = (@ScriptDir & "\" & "Quelltexte.txt") ; Hier stehen alle Texte drin!
    MsgBox(4096, "Code", $Var) ; Pfad wird angezeigt!

    [/autoit][autoit][/autoit][autoit]

    $inhalt = FileRead($var) ;Erst Datei einlesen

    [/autoit][autoit][/autoit][autoit]

    $avArray = Stringsplit($inhalt, "TheLuBuAutoit2011", 1) ; habe mal das als Trennzeichen im Text verwendet! Dann den Inhalt splitten und nicht den Dateipfad
    _ArrayDisplay($avArray) ;zeigt das Array an
    ;MsgBox gelöscht, weil sinnlos

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To Ubound($avArray) - 1
    If $avArray[$i] = "Hunde" Then
    Msgbox (0, "", "Quelltext Hunde gefunden in Arrayplatz "& $i + 1)
    _ArrayDisplay($avArray[$i])
    ElseIf $avArray[$i] = "Katzen" Then
    Msgbox (0, "", "Quelltext Katzen gefunden in Arrayplatz "& $i + 1)
    EndIf
    Next

    [/autoit]

    Der Loop zeigt keine Msgbox!

    Die Quelltextdatei:

    [autoit]


    Hunde
    1
    2
    3
    4
    5
    6
    TheLuBuAutoit2011
    Katzen
    TheLuBuAutoit2011
    1
    2
    3
    TheLuBuAutoit2011

    [/autoit]

    In diesem Beispiel sollten doch nur die Zahlen erscheinen!

    :huh: Ilse

  • jetzt hast du es wieder umgedreht,
    mit

    [autoit]

    _arrayDisplay()

    [/autoit]

    kannst du nur ein komplettes Array anzeigen, keinen einzelnen Wert.
    Quasi umgekehrt zur MsgBox
    Also in der Schleife beziehst du dich ja auf einen Wert des Arrays, den kannst du über

    [autoit]

    MsgBox(0, "", $AvArray[$i])

    [/autoit]

    anzeigen

    Also nochmal kurz und knapp:

    Ganzes Array anzeigen

    [autoit]

    _arrayDisplay($Avarray)

    [/autoit]


    Einen Wert aus einem Array anzeigen

    [autoit]

    MsgBox(0,"", $Avarray[$i])

    [/autoit]

    -EDIT-
    Deine Quelltextdatei ist "falsch", es fehlt ein Trennzeichen

    Spoiler anzeigen
  • Zur Array-Dimensionierung:

    Zitat

    1. Man muß doch am Anfang das Array dimensionieren!
    Also soviele Zeilen, soviele Spalten...

    Ja und nein.
    Du musst das Array dimensionieren, mit

    [autoit]

    Dim $array[x]

    [/autoit]

    .
    Dabei muss x größer als Null und eine ganze Zahl (1, 2, 3, ...) sein. x gibt die Anzahl der Elemente an.

    [autoit]

    Dim $array[1]

    [/autoit]


    erstellt ein Array mit einer Spalte und einem Element, dem Element 0.
    Die Angabe der Spalten ist also unnötig, solange man nur eine Spalte benötigt.

    Willst Du mehrere Spalten, musst Du das Array so dimensionieren

    [autoit]

    Dim $array[x][y]

    [/autoit]

    .
    Dabei muss y größer 0 sein. Es sollte sollte auch größer 1 sein, da es die Zahl der Spalten angibt.

    [autoit]

    Dim $array[3][2]

    [/autoit]


    estellt also ein zweispaltiges Array mit drei Elementen (Element 0, 1, 2).

  • Ich habe die Quelltext.txt nun richtig!
    Auch _ArrayDisplay zeigt alles an.
    Zeile für Zeile....
    NUR:
    Die For Schleife wird nicht ausgeführt!

    [autoit]


    #include <Array.au3>
    #include <String.au3>
    Dim $avArray
    $Var = (@ScriptDir & "\" & "Quelltexte.txt") ; Hier stehen alle Texte drin!
    ;MsgBox(4096, "Code", $Var) ; Pfad wird angezeigt!

    [/autoit][autoit][/autoit][autoit]

    $inhalt = FileRead($var) ;Erst Datei einlesen

    [/autoit][autoit][/autoit][autoit]

    $avArray = Stringsplit($inhalt, "TheLuBuAutoit2011", 1) ; habe mal das als Trennzeichen im Text verwendet! Dann den Inhalt splitten und nicht den Dateipfad
    _ArrayDisplay($avArray) ;zeigt das Array an

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    For $i = 1 To Ubound($avArray) - 1
    If $avArray[$i] = "Hunde" Then ; Dieser Text steht im Quelltext!
    MsgBox(0, "", $AvArray[$i]); diese Msgbox wird nicht gezeigt!
    Msgbox (0, "", "Quelltext Hunde gefunden in Arrayplatz "& $i + 1) ; Keine Msgbox!

    [/autoit][autoit][/autoit][autoit]

    ElseIf $avArray[$i] = "Katzen" Then
    Msgbox (0, "", "Quelltext Katzen gefunden in Arrayplatz "& $i + 1)
    EndIf
    Next

    [/autoit]

    ....mein Blutdruck fängt schon wieder an zu steigen!


    ;) Ilse

  • Also das _arrayDisplay zeigt aber das Array so an, wie es sein soll?
    Also da stehen alle Werte drin?

    Kommt die MsgBox mit den Katzen denn?

    Bist du sicher, das der Wert im Array "Hunde" ist und nicht "Hunde " oder " Hunde"?

    Ansonsten ersetz mal die Schleife mit dem hier

    [autoit]


    For $i = 1 To Ubound($avArray) - 1 Step 2
    $AvArray[$i] = StringStripWS($AvArray[$i], 7)
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To Ubound($avArray) - 1
    If $avArray[$i] = "Hunde" Then ; Dieser Text steht im Quelltext!
    MsgBox(0, "", $AvArray[$i]); diese Msgbox wird nicht gezeigt!
    Msgbox (0, "", "Quelltext Hunde gefunden in Arrayplatz "& $i + 1) ; Keine Msgbox!

    [/autoit][autoit][/autoit][autoit]

    ElseIf $avArray[$i] = "Katzen" Then
    Msgbox (0, "", "Quelltext Katzen gefunden in Arrayplatz "& $i + 1)
    EndIf
    Next

    [/autoit]
  • Jetzt klappt es!
    Hinter "Hunde" war im Quelltext aber kein Leerzeichen!

    Das ist jetzt der Code:
    Habe die Msgbox mit Quelltext hinzugefügt!

    [autoit]


    #include <Array.au3>
    #include <String.au3>
    Dim $avArray
    $Var = (@ScriptDir & "\" & "Quelltexte.txt") ; Hier stehen alle Texte drin!
    ;MsgBox(4096, "Code", $Var) ; Pfad wird angezeigt!

    [/autoit][autoit][/autoit][autoit]

    $inhalt = FileRead($var) ;Erst Datei einlesen

    [/autoit][autoit][/autoit][autoit]

    $avArray = Stringsplit($inhalt, "TheLuBuAutoit2011", 1) ; habe mal das als Trennzeichen im Text verwendet! Dann den Inhalt splitten und nicht den Dateipfad
    _ArrayDisplay($avArray) ;zeigt das Array an
    ;MsgBox gelöscht, weil sinnlos

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To Ubound($avArray) - 1 Step 2
    $AvArray[$i] = StringStripWS($AvArray[$i], 7)
    Next

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To Ubound($avArray) - 1
    If $avArray[$i] = "Hunde" Then ; Dieser Text steht im Quelltext!
    MsgBox(0, "", $AvArray[$i]); diese Msgbox wird nicht gezeigt!
    Msgbox (0, "", "Quelltext Hunde gefunden in Arrayplatz "& $i + 1) ; Keine Msgbox!
    MsgBox(0, "Das ist der Quelltext:", $AvArray[$i + 1])
    ElseIf $avArray[$i] = "Katzen" Then
    Msgbox (0, "", "Quelltext Katzen gefunden in Arrayplatz "& $i + 1)
    EndIf
    Next

    [/autoit]

    Bitte noch eine Antwort:

    Dim $avArray

    hier wurde das Array nicht dimensioniert, das ist ok?

    ;) Ilse

  • [autoit]

    Stringsplit()

    [/autoit]

    liefert ein Array zurück,
    dieses Array wird von der Funktion selbst dimensioniert, also musst du es vorher nicht deklarieren.
    Bei fast allen Funktionen, die ein Array zurückliefern, musst du dir vorher keine Gedanken ums deklarieren machen.
    Deklarationen sind wichtig, wenn du selbst ein Array erstellst, um z.B. Buttons in einer GUI zusammen zu fassen oder Werte in einem Array im Code selbst speichern willst.