$Var Problem

  • Hallo,

    ich habe ein Problem mit inetread und Variablen

    [autoit]


    $var = IniReadSection(@ScriptDir & '\meine.ini', "Liste")
    For $i = 1 to UBound($var) -1
    MsgBox(0,"",$var[$i][1])
    $sSource= BinaryToString(inetread($var[$i][1])
    _Suche()
    next

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

    Meine Ini:

    Spoiler anzeigen


    [Liste]
    1=http://www.hunde.de
    2=http://www.katzen.de

    Das Problem:

    Die Msgbox zeigt den Link an.
    MsgBox(0,"",$var[$i][1])
    Versuche ich mit inetread den Pfad zu lesen,
    dann klappt das nicht!

    $sSource= BinaryToString(inetread($var[$i][1])

    Das zweite Problem mit $Var habe ich
    bei der Funktion
    _Suche() die im Loop aufgerufen wird.
    Hier erhalte ich ebenfalls ein $Var Error

    Spoiler anzeigen
    [autoit]


    Variable used without being declared.:
    $aLink = StringRegExp($sSource,'\shref="(http://cgi.*?)">',3)
    $aLink = StringRegExp(^ ERROR

    [/autoit]

    Was mache ich hier denn falsch?
    Die Variablen sind doch normalerweise in Ordnung.
    ...versteh ich absolut nicht!

    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (4. Juli 2011 um 14:27)

  • Du nutztScite4AutoIt?
    Wenn du dein Skript aufrufst sagt dir der Syntax-Check schon ganz genau wo dein Problem liegt:

    Code
    [...]: ERROR: syntax error
    $sSource = BinaryToString(InetRead($var[$i][1])
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

    Einfach mal darüber nachdenken was das bedeuten könnte.
    Und wenn man Fehlermeldungen erhält schreibt man nicht als Problembeschreibung "klappt nicht" sondern postet die Fehlermeldung.

    Zu deinem $source-Problem.
    Wir können nur raten.
    Wir wissen weder in welchem Kontext (global, local) die Variable deklariert wurde noch wann.
    Mach dir darüber Gedanken und denke darüber nach ob die Variable für die Funktion überhaupt sichtbar ist und ob sie deklariert wurde bevor die Funktion aufgerufen wurde.

    Edit: name22
    Wollte ihm eigentlich nicht die Lösung vorkauen sonst haben wir ihn beim nächsten Problem wieder mit so einem lapidaren Mist auf dem Hals den jeder problemlos selbst lösen sollte.
    Zumindestens korrekte Syntax hinschreiben zu können halte ich für eine Grundvoraussetzung zum Programmieren.

  • Erstens fehlt in Zeile 4 bei deinem ersten Code eine Klammer. Zweitens weißt nur du was in deiner Funktion "_Suche" drinsteht. Drittens steht da als Error: "Variable used without being declared", was auf Deutsch soviel heißt wie: "Variable wurde verwendet ohne sie zu deklarieren", also verwendest du diese Variable ohne sie vorher in irgendeiner Form aufgerufen zu haben (z.B. in einer Wertzuweisung).

  • @meineHerren
    bitte nicht so streng mit mir,
    ich bin noch am lernen.

    Darf ich trotzdem noch eine Frage loswerden?

    Es reicht also nicht, daß ich meine
    $Var in einer Funktion so z.B. deklariere?

    [autoit]


    Func _Tiere()
    $aTiere = StringRegExp($sSource,'"vip">(.*?)<',3)
    endfunc

    [/autoit]

    Ich muß sie erneut als Global innerhalb des Scriptes
    aber außerhalb der Funktion deklarieren?


    Grüße
    Ilse ;)

  • Zitat

    bitte nicht so streng mit mir,
    ich bin noch am lernen.


    Wieso streng? :huh: Das waren nur Fakten, daraus kannst du machen was du willst.

    Zitat

    Darf ich trotzdem noch eine Frage loswerden?


    Nein, es ist ja nicht so als ob das hier ein Hilfe & Support Forum wäre :D.

    Zitat

    Ich muß sie erneut als Global innerhalb des Scriptes
    aber außerhalb der Funktion deklarieren?


    Du kannst sie auch in der Funktion Global deklarieren, aber das ist eher nicht zu empfehlen. Allerdings scheint mir die Funktion in deinem Fall irgendwie unnötig zu sein. :huh:

  • Also ich für meinen Teil deklariere die Variablen immer nach den Includes, etwa so:

    [autoit]


    #region Variablen
    Global $Var1, $Var2, $Var3
    Global $Var4 = 1
    #endregion

    [/autoit]
    UNPLEASANT SPOILER

    You just lost the game!