Textdatei verändern

  • Hallo
    Ich wollte ein Scribt für meine Freunde machen, mit dem in Textdateien IP`s eingefügt werde.
    Also es soll so werden. Man hat ein fenstern, indem man dann die IP eingiebt. Die IP die geände werden soll steht so ca. an stelle 250. Die soll dann gegen die eingegebene IP ausgetauscht werden.

    Ich hab die suche benutzt nur habe leider nichts gefunden was wir weiter helfen könnte. Bin auch noch net so der beste in Autoit ;) . Ich hoffe ihr könnt mir helfen. Annsonnsten wünsche ich allen ein frohes Fest und sage schon ma THX im foraus.

  • Hi,

    also das sollte wirkilch nicht allzu schwer sein,
    schau dir mal die makroliste an also @ipadress etc...
    Dann Filewriteline und Guicreate.
    Natürlich brauchst du dafür die deutsche hilfedatei.

    mfg

  • ok danke. ich bin im moment eh noch bei dem Installations Script allgemein. Thx und MFG Cornfl4kes

  • Momentan hängt es bei mir mit dem Sprung vom Schritt1 der Installation zu Schritt2.


    Danke für die schnelle und freundliche Hilfe ^^
    MFG Cornfl4kes

  • Ich hab es jetzt auch mit:


    Versucht aber dann hab ich nur das Fenster und kann aber nix anklicken....

    Ich hoffe mir kan einer helfen.

  • Ich hoffe nicht ;)

    Das ermöglicht unstrukturiertes Springen im Programmcode !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ich hab allgemein ein problem mit den schleifen. Ich bin jetzt soweit aber das einzige was funktioniert ist der Exit button.... :wacko:

    Spoiler anzeigen
    [autoit]


    #include
    #include
    #include
    Global $Next

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

    Opt("GUIOnEventMode", 1)
    GUICreate ("Installation Ascent Server Schritt 1", 500,200)
    GUICtrlCreateLabel ("Willkommen zur Installation von Ascent WoW Server.",10,15)
    GUICtrlCreateLabel ("Mit diesem Script wird der World of Warcraft Ascent Server auf deinem Computer/Server Installiert.",10,45)
    GUICtrlCreateLabel ("Um mit der Installation fort zu fahren klicke auf den Weiter Button.",10,60)
    GUICtrlCreateLabel ("Um mit die Installation zu beenden klicke auf den Beenden Button.",10,75)
    GUICtrlCreateButton (" Beenden ", 50,150)
    GUICtrlSetOnEvent(-1, '_Exit1')
    GUICtrlCreateButton (" Weiter ", 380,150)
    GUICtrlSetOnEvent(-1, '_Weiter1')
    GUICtrlCreateButton (" Visit Us ", 200,150)
    GUISetState(@SW_SHOW)
    Func _Weiter1()
    $Next = 1
    EndFunc

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

    Func _Exit1()
    Exit
    EndFunc

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

    If $Next = 0 Then
    Exit
    EndIf

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

    If $Next = 1 Then
    GUICreate ("Installation Ascent Server Schritt 2", 500,200)
    EndIf

    [/autoit]


    Ich hab es auch mit der anderen Methode versucht aber iwie hab ich glaub ich n fehler bei dem If drinne weil er das Programm ja startet aber man nichts anklicken kann.... :(

    Spoiler anzeigen
    [autoit]


    #include
    #include
    #include
    Global $Next

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

    Opt("GUIOnEventMode", 1)
    GUICreate ("Installation Ascent Server Schritt 1", 500,200)
    GUICtrlCreateLabel ("Willkommen zur Installation von Ascent WoW Server.",10,15)
    GUICtrlCreateLabel ("Dieses Installations Script wurde geschrieben von Cornfl4kes",10,30)
    GUICtrlCreateLabel ("Mit diesem Script wird der World of Warcraft Ascent Server auf deinem Computer/Server Installiert.",10,45)
    GUICtrlCreateLabel ("Um mit der Installation fort zu fahren klicke auf den Weiter Button.",10,60)
    GUICtrlCreateLabel ("Um mit die Installation zu beenden klicke auf den Beenden Button.",10,75)
    $Exit = GUICtrlCreateButton (" Beenden ", 50,150)
    $Weiter1 = GUICtrlCreateButton (" Weiter ", 380,150)
    GUICtrlCreateButton (" Visit Us ", 200,150)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    If $msg <> 1 Then
    Select

    Case $msg = $Exit or $msg = $GUI_EVENT_CLOSE
    Exitloop
    Case $msg = $Weiter1
    GUICreate ("Installation Ascent Server Schritt 2", 500,200)
    EndSelect
    EndIf

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

    Wend

    [/autoit]


    Hofentlich kann mir einer von euch helfen ^^</File.au3></Array.au3></GUIconstants.au3>

    Einmal editiert, zuletzt von Cornfl4kes (23. Dezember 2007 um 11:16)

  • Also ich hab jetzt einfach die Zeile ausgelesen mit

    [autoit]

    $line = FileReadLine($file1, 48)

    [/autoit]


    aber wie kann ich jetzt diese Zeile jetzt mit etwas anderem überschreiben?
    Ich hab es mit

    [autoit]

    $line = $ip ;(ip = Die IP die mit der anderen erstezt werden soll.)

    [/autoit]


    Mit Filewriteline hab ich es auchversucht aber iwie weis ich da nicht wie ich die Line angeben kann also in welcher reihe und er hängt es immer nur an dasgeschriebene hinten dran und ersetzt es nicht.

    Ich hoffe ihr könntmir helfen^^
    MFG Cornfl4kes

  • über FileWritefromArray kann ich leider nichts in der Hilfe Datei finden kannst du mir bitte erklären was der Befehl wirkt und wie man ihn anwendet :)

    Wäre echt net.
    MFG

    • Offizieller Beitrag

    Hi,

    also für Anfänger wäre es sicherlich am besten, du machst folgendes:

    Script einlesen mit _FileReadToArray
    Dann in der Schleife (die einzelnen Zeilen durchgehen wie in der Hilfe) und mit StringinStr prüfen, ob dein Wert enthalten ist, den du ersetzen willst. Wenn ja, dann änderst du diesen direkt im Array.
    Anschließend _FileWriteFromArray
    Fertig.

    So long,

    Mega

  • aber da ich diese textdatei die er auslesen soll ja kenne und auch weis an welcher stelle die zeile kommt wäre es nicht dann einfacher wenn man ihm sagt er soll genau diese Zeile überschreiben. Weil beim auslesen kommen bestimmt dann fehler auf weil die IP 127.0.0.1 an einer ganz bestimmten stelle nur ausgetauscht werden darf aber die ip kommt so ca. 5 ma in der Datei vor. (kann auch sein das ich mich irre wie gesagt noch net so erfahren ;) )
    Aber jetzt ist meine frage immer noch was bewirkt denn _FileWriteFromArray ?? ^^ Iwie finde ich es nicht über die suche bei der Hilfedatei. ?(

    Dank und MFG Cornfl4kes

    • Offizieller Beitrag

    Hi,

    hier das sollte die erstmal weiterhelfen:

    Spoiler anzeigen
    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    GUICreate("Installation Ascent Server Schritt 1", 500, 200)
    GUICtrlCreateLabel("Willkommen zur Installation von Ascent WoW Server.", 10, 15)
    GUICtrlCreateLabel("Dieses Installations Script wurde geschrieben von Cornfl4kes", 10, 30)
    GUICtrlCreateLabel("Mit diesem Script wird der World of Warcraft Ascent Server auf deinem Computer/Server Installiert.", 10, 45)
    GUICtrlCreateLabel("Um mit der Installation fort zu fahren klicke auf den Weiter Button.", 10, 60)
    GUICtrlCreateLabel("Um mit die Installation zu beenden klicke auf den Beenden Button.", 10, 75)
    $end_B = GUICtrlCreateButton(" Beenden ", 50, 150)
    $weiter_B = GUICtrlCreateButton(" Weiter ", 380, 150)
    $visit_B = GUICtrlCreateButton(" Visit Us ", 200, 150)
    $ersetzen_B = GUICtrlCreateButton(" Ersetzen ", 300, 150)
    GUISetState(@SW_SHOW)

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

    Global $file = @ScriptDir & "\logonserver alt.txt"
    Global $ipListen = "1.1.1.1"
    Global $ipHost = "1.1.1.1"

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $end_B
    Exit (0)
    Case $weiter_B
    MsgBox(0, "", "Weiter :-)")
    Case $visit_B
    MsgBox(0, "", "Visit us :-)")
    Case $ersetzen_B
    _ersetzen()
    EndSwitch
    WEnd

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

    Func _ersetzen()
    Dim $lines_A
    If Not _FileReadToArray($file, $lines_A) Then
    MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $i = 1 To $lines_A[0]
    If StringInStr($lines_A[$i], ' < Listen Host =') <> 0 Then $lines_A[$i] = '<Listen Host = ' & $ipListen
    If StringInStr($lines_A[$i], ' ISHost =') <> 0 Then $lines_A[$i] = ' ISHost = ' & $ipHost
    Next
    _FileWriteFromArray($file, $lines_A, 1)
    EndFunc ;==>_ersetzen

    [/autoit]

    So long,

    Mega

  • jetzt noch eine frage ^^ ich habe jetzt in das fenster eingabe felder, in denen der Benutzer seine ip eingiebt und die dann gegen die im der Datei ausgetauscht wird.
    Ich habe es mit versucht aber leider kein Erfolg: (ich benutze jetzt mal deinen code da meiner viel zu unübersichtlich ist :D )

    Spoiler anzeigen
    [autoit]


    #include
    #include
    #include

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

    GUICreate ("Installation Ascent Server", 500,300)
    $end_B = GUICtrlCreateButton (" Beenden ", 50,250)
    $weiter_B = GUICtrlCreateButton (" Weiter ", 250,250)
    $ersetzen_B = GUICtrlCreateButton(" Ersetzen ", 300, 250)
    GUICtrlCreateLabel ("Gebt hier eure Daten für die Server Configuration ein. Ändert ihr diese Daten nicht, bleiben sie Standard.", 5 ,10)
    GUICtrlCreateLabel ("IP:", 5, 100)
    $haip = GUICtrlCreateInput ("127.0.0.1" ,80 ,100 ,100 ,20)
    GUISetState(@SW_SHOW)
    $haip1 = GUICtrlRead($haip)

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

    Global $file = @ScriptDir & "\logonserver alt.txt"
    Global $ipListen = $haip1
    Global $ipHost = $haip1

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $end_B
    Exit (0)
    Case $weiter_B
    MsgBox(0, "", "Weiter :-)")
    Case $ersetzen_B
    _ersetzen()
    EndSwitch
    WEnd

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

    Func _ersetzen()
    Dim $lines_A
    If Not _FileReadToArray($file, $lines_A) Then
    MsgBox(4096, "Error", " Error reading log to Array error:" & @error)
    Exit
    EndIf
    For $i = 1 To $lines_A[0]
    If StringInStr($lines_A[$i], ' < Listen Host =') <> 0 Then $lines_A[$i] = '_ersetzen

    [/autoit]

    </Listen></File.au3></Array.au3></GUIconstants.au3>