Array Var Problem

  • Hallo,

    ich habe ein Problem mit Variablen
    Verwende ich diesen Code
    dann klappt soweit alles!

    [autoit]


    $search = _StringBetween($aZeile[$i],":","")
    _ArrayDisplay($search) ; Das Ergebnis wird korrekt angezeigt! Ein Erfolgserlebnis!

    [/autoit]

    Nun möchte ich die Variable $Search weiterverarbeiten
    dann klappt es nicht mehr!

    [autoit]


    $search = _StringBetween($aZeile[$i],":","")
    _ArrayDisplay($search) ; Das Ergebnis wird korrekt angezeigt!

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

    MsgBox(0,"",$Search); Die Msgbox zeigt das Array nicht an.
    FileWriteLine($NeueDatei, $search) ; Auch hier wird nichts eingetragen!

    [/autoit]

    Liebe Grüße
    Ilse ;)

    3 Mal editiert, zuletzt von Ilse (14. April 2011 um 21:41)

  • [autoit]


    $search = _StringBetween($aZeile[$i],":","")
    _ArrayDisplay($search) ; Das Ergebnis wird korrekt angezeigt!

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

    MsgBox(0,"",$Search[1]); Die Msgbox zeigt das Array nicht an.
    FileWriteLine($NeueDatei, $search[1]) ; Auch hier wird nichts eingetragen!

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


    stringbetween() gibt, wie du schon sagtest, ein ARRAY zurück. ein array kann mehrere daten beinhalten. du musst also den index mit angeben... am besten ließt du dir mal durch was array sind.

  • [autoit]

    $search = _StringBetween($aZeile[$i],":","")
    _ArrayDisplay($search) ; Das Ergebnis wird korrekt angezeigt!

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

    MsgBox(0,"",$Search); Die Msgbox zeigt das Array nicht an.
    FileWriteLine($NeueDatei, $search) ; Auch hier wird nichts eingetragen!

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

    MsgBox(0, "", $Search[0]); Jetzt sollte etwas angezeigt werden

    [/autoit]
  • Hallo,

    es ist jetzt ein folgender Fehler
    aufgetaucht. Ich weiß nicht woran das liegen kann!

    [autoit]


    Global $aZeile

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

    For $i = 1 To UBound($aZeile,1)-1
    if StringInStr($aZeile[$i],$Form) Then
    ;$aZeile[$i] = StringReplace($aZeile[$i], "URL GOTO=", "")
    $search = _StringBetween($aZeile[$i],":","ATTR=ID")
    _ArrayDisplay($Search)
    MsgBox(0,"",$search[0])

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

    EndIf
    next

    [/autoit]

    Das ist meine Fehlermeldung

    Zitat

    : ==> Subscript used with non-Array variable.:
    MsgBox(0,"",$search[0])
    MsgBox(0,"",$search^ ERROR

    Ich bekomme die Zeile angezeigt, aber die Msgbox hat doch das Array?
    Auch wenn ich Das Array dimensioniere

    Dim $aZeile[10]

    erhalte ich einen Error

    ?( ?(
    Liebe Grüße
    Ilse

    2 Mal editiert, zuletzt von Ilse (14. April 2011 um 19:31)

  • Ich habe den kpl. Quellcode
    nochmal überschaulicher gemacht.

    So kann man es besser nachvollziehen.
    Die Textdatei die gewählt wird

    Spoiler anzeigen


    $Version = "Version" ; das gesuchte Wort im Text
    $Form = "TYPE=SELECT FORM=NAME" ;ID der Form

    Das Script mit dem Fehler

    [autoit]


    #include <Array.au3>
    #include <file.au3>
    #Include <String.au3>

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

    $message = "Textauswahl"

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

    $Auswahl = FileOpenDialog($message, @ScriptDir & "", "Texte (*.txt;*.csv)", 1 + 4 )
    Dim $aZeile[10]
    Global $sPathFile = $Auswahl
    $NeueDatei = InputBox("Neu","DateiName","Neuer-Text.txt")
    _FileReadToArray($sPathFile, $aZeile) ; txt einlesen in Array
    ;_ArrayDisplay($aZeile)
    #region Feldsuche
    $Version = "Version" ; das gesuchte Wort im Text
    $Form = "TYPE=SELECT FORM=NAME" ;ID der Form

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

    #endregion Feldsuche

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

    For $i = 1 To UBound($aZeile,1)-1
    _ArrayDisplay($aZeile)
    if StringInStr($aZeile[$i],$Version) Then
    $aZeile[$i] = StringReplace($aZeile[$i],$Version,"_Markt()")
    FileWriteLine($NeueDatei, "Test()")
    sleep(1000)
    EndIf

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

    if StringInStr($aZeile[$i],$Form) Then

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

    $search = _StringBetween($aZeile[$i],":","ATTR=ID")

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

    MsgBox(0,"",$search[0])

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

    EndIf

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

    Next

    [/autoit]

    Und das ist die Meldung

    Zitat

    Subscript used with non-Array variable.:
    MsgBox(0,"",$search[0])
    MsgBox(0,"",$search^ ERROR

  • Hallo Oscar,

    ich habe gerade den kpl. Code gepostet.
    Das mit isArray hatte ich auch schon probiert!

    [autoit]


    Func _checkPM($temp)
    $substring_arr = _StringBetween($temp, "var i=", ";")
    If IsArray($substring_arr) Then
    Return $substring_arr[0]
    Else
    Return "Nichts gefunden!!!"
    EndIf
    EndFunc ;==>_checkPM

    [/autoit]

    Ich bekam innerhalb des Scriptes die Meldung "Nichts gefunden"
    Vielleicht hab ich da was falsch gemacht?

    huh, bin schon seit Stunden am lesen und probieren
    ich krieg das einfach nicht hin!

    Liebe Grüße
    Ilse ;)

  • Hallo Oscar,

    hm ich habe in dem Text
    mehrere Felder die ich untersuche.
    Je nach Inhalt liefert StringBetween das korrekte Ergebnis!

    [autoit]


    #region Feldsuche
    $Version = "Version" ; das gesuchte Wort im Text
    $GoTo = "URL GOTO=" ; ein weiteres gesuchte Wort im Text
    $FeldID = "ATTR=ID:"
    $FeldName = "ATTR=NAME:"
    #endregion Feldsuche

    [/autoit]

    d.h. Wenn StringBetween nichts zum anzeigen hat
    bzw. wenn nichts gefunden wird kommt diese ErrorMeldung?

    Wie kann ich IsArray oder @Error im Code
    so einbauen, damit das endlich läuft.

    Die Textdateien sind unterschiedlich BeispielText

    Spoiler anzeigen


    Hier steht die VERSION 54664564
    URL GOTO=http://www.test.de
    Hier steht Text TAG POS=1 TYPE=SELECT FORM=NAME:TestID Html:Text
    Hier steht TextTAG POS=1 TYPE=SELECT FORM=NAME:TestID ATTR=NAME:Hier Steht Text

    Die Texte die ich einlesen sind unterschiedlich.
    D.h. Mein Script wollte ich so aufbauen,
    daß, wenn die Textdatei die Inhalte die ich suche hat, diese Inhalte in die neue Datei geschrieben werden.
    Deßhalb wollte ich Zeile für Zeile prüfen, Strings auswerten und dann schreiben!

    Hier nochmal das kpl. Script

    [autoit]


    #include <Array.au3>
    #include <file.au3>
    #Include <String.au3>

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

    $message = "Textauswahl"

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

    $Auswahl = FileOpenDialog($message, @ScriptDir & "", "Texte (*.txt;*.csv)", 1 + 4 )
    Dim $aZeile[10]
    Global $sPathFile = $Auswahl
    $NeueDatei = InputBox("Neu","DateiName","Neuer-Text.txt")
    _FileReadToArray($sPathFile, $aZeile) ; txt einlesen in Array
    ;_ArrayDisplay($aZeile)
    #region Feldsuche
    $Version = "Version" ; das gesuchte Wort im Text
    $Form = "TYPE=SELECT FORM=NAME" ;ID der Form
    ;hier trage ich alle Suchfelder ein
    #endregion Feldsuche

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

    For $i = 1 To UBound($aZeile,1)-1
    _ArrayDisplay($aZeile)
    if StringInStr($aZeile[$i],$Version) Then
    $aZeile[$i] = StringReplace($aZeile[$i],$Version,"_Markt()")
    FileWriteLine($NeueDatei, "Test()")
    sleep(1000)
    EndIf

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

    if StringInStr($aZeile[$i],$Form) Then

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

    $search = _StringBetween($aZeile[$i],":","ATTR=ID")

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

    MsgBox(0,"",$search[0])

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

    EndIf

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

    Next

    [/autoit]

    Bin heute fix und fertig mit diesen Arrays...

    Liebe Grüße
    Ilse ;)

    3 Mal editiert, zuletzt von Ilse (14. April 2011 um 20:40)

  • [autoit]

    #include <Array.au3>
    #include <file.au3>
    #Include <String.au3>

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

    $message = "Textauswahl"

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

    $Auswahl = FileOpenDialog($message, @ScriptDir & "", "Texte (*.txt;*.csv)", 1 + 4 )
    Dim $aZeile[10]
    Global $sPathFile = $Auswahl
    $NeueDatei = InputBox("Neu","DateiName","Neuer-Text.txt")
    _FileReadToArray($sPathFile, $aZeile) ; txt einlesen in Array
    ;_ArrayDisplay($aZeile)
    #region Feldsuche
    $Version = "Version" ; das gesuchte Wort im Text
    $Form = "TYPE=SELECT FORM=NAME" ;ID der Form
    ;hier trage ich alle Suchfelder ein
    #endregion Feldsuche

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

    For $i = 1 To UBound($aZeile,1)-1
    _ArrayDisplay($aZeile)
    if StringInStr($aZeile[$i],$Version) Then
    $aZeile[$i] = StringReplace($aZeile[$i],$Version,"_Markt()")
    FileWriteLine($NeueDatei, "Test()")
    sleep(1000)
    EndIf

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

    if StringInStr($aZeile[$i],$Form) Then

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

    $search = _StringBetween($aZeile[$i],":","ATTR=ID")
    If IsArray($Search) Then
    MsgBox(0,"",$search[0])
    Else
    MsgBox(0,"","Es wurde nichts gefunden")
    EndIf
    EndIf

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

    Next

    [/autoit]