In Files Sätze einfügen???

  • Hi,
    Weis wer wie man in ein File an eine Bestimmte stelle (bei mir zwischen zwei Sätzen) etwas rein schreiben lassen was in Variablen gespeichert ist?

    Laos Kurz:

    Du schreibst etwas in eine Inputbox
    Das wird in Variable $Inputbox geseichert
    Das soll jetzt in ein txt. Dokument zwischen zwei Sätze geschrieben wird

  • Wo ist das Problem?
    Du suchst nach SatzA & SatzB und ersetzt diese durch SatzA & Eingabe & SatzB.
    SartA & SatzB müssen nur eindeutig sein.
    Aber warum verwendest Du da nicht einfach einen Editor dafür?

    Gruss Hans-Jürgen ^^

  • So das sollte funktionieren!

    Spoiler anzeigen
    [autoit]

    #Include <string.au3>

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

    $hInput = InputBox("Input","")
    $hFile = FileOpen(@ScriptDir & "\file.txt",2) ;Laden
    $hText = FileRead($hFile) ;Text auslesen
    $hStart = "1. Satz"
    $hPlace =StringInStr($hText,$hStart) + StringLen($hStart) ;Sucht Position
    $hText = _StringInsert($hText, $hInput, $hPlace) ;Fügt Input-String an der Position ein
    FileWrite($hFile,$hText) ;neuer Text in Datei einfügen

    [/autoit]
  • So geht es ganz einfach

    [autoit]

    _FileWriteToLine($sFile, $iLine, $sText [, $fOverWrite = 0])

    [/autoit]


    $sFile ist die Datei in der geschrieben werden soll.
    $iLine ist die Zeile (als Zahl ;) )
    $sText ist der Text der geschrieben werden soll
    Wenn $fOverWrite = 1 Dann wird die Zeile überschrieben, ansonsten wird nicht überschrieben.
    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

  • Ich würds so machen:

    [autoit]

    $dateiname="dateiname.txt"
    $text=FileRead($dateiname)
    FileWrite(FileOpen($dateiname, 2), StringReplace($text, "Satz1Satz2", "Satz1"&InputBox("", "")&"Satz2"))

    [/autoit]
  • Das tut bei mir nicht

    @ PrideRage

    Wie muss ich die Variablen anlegen habs so gemacht:

    [autoit]

    $dateiname="dateiname.txt"
    $sFile =FileRead($dateiname)
    $iLine = 3
    $sFile = "Hallo das ist ein Test"

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

    _FileWriteToLine($sFile, $iLine, $sText [, $fOverWrite = 0])

    [/autoit]

    Das kommt dann

  • Hallo Fsselmaster,

    _FileWriteToLine($sFile, $iLine, $sText [, $fOverWrite = 0]) Damit ist ein optionaler Parameter gekennzeichnet, der bei weglassen auf den Standardwert 0 gesetzt wird Das heist du kannst es so schreiben

    [autoit]

    _FileWriteToLine($sFile, $iLine, $sText )

    [/autoit]

    oder so

    [autoit]

    _FileWriteToLine($sFile, $iLine, $sText , 0)

    [/autoit]

    in beiden Fällen wird die alte Zeile nicht überschrieben.

    In deinem Fall musst du es aber so

    [autoit]

    _FileWriteToLine($sFile, $iLine, $sText , 1)

    [/autoit]

    schreiben, da du die alte Zeile ja überschreiben willst,

    Hilfe lesen bildet,

    Edit: 2. Spoiler-Inhalt korrigiert, danke @Fabian

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (12. September 2010 um 13:35)

  • autoBert
    Du hast eine eckige Klammer nicht gelöscht ;)

    [autoit]

    _FileWriteToLine($sFile, $iLine, $sText , 1)

    [/autoit]

    Natürlich brauchst du auch noch die nötige Include

    [autoit]

    #include <File.au3>

    [/autoit]

    Lg, Fabian

  • #include <File.au3>
    _FileWriteToLine("C:\Users\MasterXxX\Desktop\Test.txt",3,"Das ist ein test",0)

    So gehts immer noch net

  • OK habs geschaft noch eine Kleine Frage wie kann ich mit einer If schleife nachschauen ob der Rückgabe wert 1 oder 0 ist?