FileWrite über 700 Zeilen Code

  • Hallo,

    Ist es i-wie möglich das ich den FileWrite-Befehl über 700 Zeilen nutzen kann und nicht immer den Befehl von vorne eintippen muss? Das würde mir eine Menge Zeit ersparen. Achja der Text enthält AutoIT Code möglicherweise müsste man das berücksichtigen. Hat wer ne Idee?

    PS: Sorry, das ich schon wieder nerve. Aber Google ergab auch keine Hilfe und diese Com ist einfach so unwiderstehlich :D

    Einmal editiert, zuletzt von SklavenTrieb (24. September 2010 um 15:29)

  • Thema: Schleifen, heute im Angebot:

    [autoit]

    While x (= y)
    ;Die Whileschleife!! zum Probierpreis!
    WEnd

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

    For x To y (Step z)
    ;Auch die Forschleife ist sehr beliebt, nur 1.99 das Stück!
    Next

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

    Do
    ;Do inclusive Until, das ist doch was! 2 zum Preis von einem!
    Until x = y

    [/autoit]


    ;)

    Einmal editiert, zuletzt von stayawayknight (23. September 2010 um 22:20)

  • Das sind aber nicht immer die selben Befehle! Heißt doch das Schleißen mir nichts bringen. Der Code ist z.B. So :

    MsgBox(0,"","1")
    MsgBox(1,"",test test")


    Sprich ich hab leertasten drin und Text der sich nicht spiegelt. Ich werd aus dir i-wie nicht schlau :D Sorry, vllt. seh ich den Wald vor lauter Bäumen auch nicht mehr...

  • Naja das Schleifen nicht helfen steht nirgends geschrieben - aber sie helfen in fast allen Fällen, gib doch mal genauere Beispiele an, was für Befehle das sind -
    ansonsten würd ich sagen, versuchs mal mit

    [autoit]

    Execute

    [/autoit]

    .
    Leerstellen lassen sich mit

    [autoit]

    StringStripWs

    [/autoit]


    entfernen.
    Ansonsten verstehe ich dein Problem (bisher) nicht ganz... ?(

  • Ich hab den Code von einem selbst geschriebenen Programm und in diesem Programm will ich Einige Befehle bzw. Variablen raus schreiben(FileWrite) in eine andere .au3 datei. Sprich wenn ich die Datei ausführe ( Am anfang nur eine) und ich etwas bestimmtes tue soll er mir den Code in die *.au3 datei schreiben(somit hab ich dann zwei, die anfangsdatei und die neue). Leider ist der Code ziemlich lang. Und jedes FileWrite einzeln einzutippen wäre Selbstmord. Ich hoffe du verstehst jetzt.

    €dit: Mit execute werd ich spätestens bei While 1 oder If Probleme bekommen.

    Einmal editiert, zuletzt von SklavenTrieb (23. September 2010 um 22:36)

  • So ganz klar ist mir zwar nicht was du willst, aber evtl hilft dir ja:

    [autoit]

    _FileReadToArray

    [/autoit]

    damit wird die Datei Zeilenweiße in eine Array geschrieben und dann kannst du gezielt einzelne Zeilen in eine neue Datei schreiben.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • chip:

    Das geht wahrscheinlich nicht. Ich habe eine Datei z.b. Test.au3 in der Viele Funktionen, Variabeln und ähnliches ist. Jetzt starte ich das programm bekomme eine Gui und wähle da aus, das er mir z.b. MsgBox(0,"Hallo","Hello World") in eine neue *.au3 Datei schreiben soll. Nur handelt es sich bei mir nicht nur um eine Zeile sondern um ein paar hunderte.

  • Du willst also einzelen Funktionen aus einer au3 herrausziehen und in eine neue Datei schreiben?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • ich bin immer noch für StringRegExp ;)

    dann suchst zB nach Func XY() bis EndFunc und dann hast das schon mal in einem Array
    aber dafür gibts hier bessere Experten wenn du es mit StringRegExp machen willst als mich^^

  • also ich versteh da nur die hälfte außerdem so wie ich das verstanden hab kann man damit nur was suchen und specihern. Ich will aber einfach nur 700 Zeilen Code in eine andere .au3 datei schieben. Das hört sich i-wie nicht so schwer an, aber anscheinend ist es das doch.

  • Hi Sklaventrieb,

    das geht wirklich einfach. Du suchst einfach ab dem "Func" bis "EndFunc" und speicherst diese Wörter plus den Inhalt, der beliebig sein kann ((.|\s)* ; Zeichen oder Leerzeichen bzw. Absätze).

    [autoit]

    StringRegExp($sFile, '(Func(?:.|\s)*?EndFunc)', 3)

    [/autoit]

    Alles, was in Kommentaren steht, wird zwar mitgenommen, aber das wird wohl nicht zu schlimm sein (seltener Fall).
    Außerdem fundet er jede Funktion, aber da kannst du ja selbst sortieren ;)

    Edit:
    Villt. hilft dir dieser kleine Teil (da wird jede funktion in ein Arrayelement geschrieben).

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $sFile = FileRead("C:\Program Files (x86)\AutoIt3\Include\Array.au3")
    $aFuncs = StringRegExp($sFile, '(Func(?:.|\s)*?EndFunc)', 3)
    _ArrayDisplay($aFuncs)

    [/autoit]

    MfG black_skorpi

  • Wieso muss ich den $sfile eintragen? Weil der Befehl befindet sich ja in der gleichen Datei wie der Code...