inhalt Txt in inputfeld

  • ei ne frage habe ich noch möchte einen bestimmten inhalt einer txt in ein eiputfeld schreiben;
    zb.
    in der datei pcscan.txt befinden sich folgende einträge
    mac: 0c-13-E8-55-57-E5 "dieses soll in ein inputfeld"
    ip:192.168.0.1 "dieses soll auch in ein seperates inputfeld wie mache ich das?"

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Generell mit FileRead und GuiCtrlSetData... aber wenn du schon die Einträge kennst, warum dann eine txt-Datei?

  • wir haben auf allen rechner einen dienst laufen der alle daten ins netzt schreibt für jeden pc eine txt auf einem bestimmten laufwerk.
    Ich bin doch dabei langsam autoit zu lernen, ich will mir ein Helpdesktool bauen ;)
    ich will falls der rechner offline ist also nicht erreichbar nicht im netz, die rechnerdaten aus der txt auslesen und dann in ein inputfeld wieder geben.
    FileRead und GuiCtrlSetData habe ich bereits herausgefunden aber wie eine bestimmte stelle der txt in ein iputfeld?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hallo,
    Inputfeld erstellen und text ändern Beispiel:

    [autoit]


    $text="das ist der Variablentext!"
    guicreate("test") ; fensterchen basteln...
    GUISetState(@SW_SHOW) ;...und sichtbar machen
    $input=GUICtrlCreateInput("Das ist ein Inputtext",100,200);ein Inputfeld wird erzeugt mit Text
    sleep (3000) ;3 Sekunden warten
    guictrlsetdata($input,"Hallo, hier ist die IP blablupp"); die Daten im Inputfeld werden verändert
    sleep(3000)
    guictrlsetdata($input,$text); die Daten im Inputfeld werden verändert per Variable
    while 1
    wend

    [/autoit]


    ciao
    Andy

  • wie ich ein imputfeld erstelle weiss ich, und wie ich die daten dort reinkriege mir geht es eingtlich darum
    der text der ins inputfeld kommt aus einer txt wo diverse einträge sind wie auch zum beispiel die mac oder die ip .

    zb so
    mac;01-13-E8-B8-47-15
    ip;192.168.0.3

    wie kann ich inherhalb der txt suchen und das was nach mac; in das inputfeld schreiben?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hallo subzero007,

    schau dir doch in der Hilfe FileReadLine, StringReplace, StringInStr (wobei dieser nicht unbedingt gebraucht wird, wenn du @extended von StringReplace auswertest),

    mfg (Auto)Bert

  • Hey,

    also hier habe ich ja was gefunden.

    [autoit]

    $file = FileOpen("test.txt", 0)

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

    ; Prüfen, ob Datei eingelesen wurde
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    ; Zeilen des Textes einlesen bis EOF
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    MsgBox(0, "Zeile gelesen:", $line)
    Wend

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

    FileClose($file)

    [/autoit]

    Fileread line ist schonmal der ansatz aber habe echt keine idee was ich dann machen sollte bitte noch einen Tipp ;)

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Wäre es nicht leichter das ganze in eine "*.ini" zu schreiben?
    Das kann man erstens leichter einlesen und zweitens auch leichter wieder auslesen.

    Entschuldige wenn ich dein Problem nicht ganz verstanden habe, aber hier wäre eine Lösung:

    [autoit]

    #include <GUIConstantsEx.au3>
    GUICreate("test", 254, 33, 192, 124)
    GUICtrlCreateLabel("Adresse:", 4, 6, 45, 17)
    $Input = GUICtrlCreateInput("", 52, 4, 121, 21)
    $Button = GUICtrlCreateButton("speichern", 176, 4, 75, 25)

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

    If FileExists(@ScriptDir & "\Adresse.ini") Then GUICtrlSetData($Input,IniRead(@ScriptDir & "\Adresse.ini","Informationen","Adresse",True)) ;Lesen
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button
    IniWrite(@ScriptDir & "\Adresse.ini","Informationen","Adresse",GUICtrlRead($Input)) ;Schreiben
    EndSwitch
    WEnd

    [/autoit]

    Die Datei wäre so aufgebaut:

    Code
    [Informationen]
    Adresse=XYZ

    Er liest das was hinter "Adresse=" steht, siehe im Quellcode bei ";Lesen"

    MfG
    Darknoop ;)

  • es läuf ein dienst auf allen pc die ein datei wegschreiben das kann ich nicht beeinflussen daher
    muss ich die datei einlesen die der dienst zu verfügung stellt schön wäre es mit einer ini natürlich

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Alles klar,

    Jetzt hab ichs verstanden, du kannst das ganze mit StringSplit machen sieh z.B. diese Beispiel hier:

    [autoit]


    $string = "mac;XX:XX:XX:XX"
    $split = StringSplit($string,"mac;",1)
    MsgBox(0,"","die mac adresse ist: " & $split[2])

    [/autoit]

    StringSplit teilt den String an den von dir angegebenen Zeichen, diese werden dann in ein array geschrieben
    teilt man zB. flogenden string an den ";"-Zeichen :

    [autoit]

    $str = "teil1;teil2;teil3;teil4"

    [/autoit]

    dann sieht das array so aus:

    [autoit]

    $a[1] = "teil1"
    $a[2] = "teil2"
    $a[3] = "teil3"
    $a[4] = "teil4"

    [/autoit]

    edit
    hab mir mal die arbeit gemacht und ein program zu deinen angaben oben geschrieben, dort sieht der string so aus:

    mac:blablabla
    ip:blablabla

    mein programm hier geht genau nach diesem muster:

    [autoit]

    #include <GUIConstants.au3>

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

    ;Datei zum einlesen
    $File = ""

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

    If FileExists($File) Then
    ;Datei einlesen
    $String = FileRead($File)
    ;Zeilenumbrüche durch : ersetzen und String spliten:
    $Split = StringSplit(StringReplace($String, @CRLF, ":"), ":", 1)
    Else
    Exit
    EndIf

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

    GUICreate("test", 162, 54, 331, 153)
    $Mac = GUICtrlCreateInput($Split[2], 36, 4, 121, 21)
    $Ip = GUICtrlCreateInput($Split[4], 36, 28, 121, 21)
    GUICtrlCreateLabel("Mac:", 4, 6, 28, 17)
    GUICtrlCreateLabel("Ip:", 4, 30, 16, 17)
    GUISetState(@SW_SHOW)

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    MfG
    Darknoop

    Einmal editiert, zuletzt von Darknoop (7. Juni 2009 um 21:36)

  • Super das habe ich soweit verstanden;
    aber wie suche ich in txt nach der mac also nach dem string??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Hallo subzero007,

    ich würde StringReplace einsetzen:

    [autoit]

    $file = FileOpen("test.txt", 0)

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

    ; Prüfen, ob Datei eingelesen wurde
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    ; Zeilen des Textes einlesen bis EOF
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $text = StringReplace($line, "mac: ", "-")
    if @extended >0 then MsgBox(0,"Mac-Adresse",$Text)
    $text = StringReplace($line, "ip: ", "-")
    if @extended >0 then MsgBox(0,"IP:",$Text)
    MsgBox(0, "Zeile gelesen:", $line)
    Wend

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

    FileClose($file)

    [/autoit]

    Wenn @extended>0 wurde der String (also entweder "mac: " btw. "ip: ") gefunden und mit Leerstellen ersetzt, der resultierende String ist also das gewünschte Ergebniss. Trotzdem testen, ich habe es hier online erstellt.

    ps.: das war genau der Tip was du lesen solltest,

    mfg (Auto)Bert

  • er schreibt mir alles in eine msg box auch alles was nicht mac: anfängt zb video:??

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (7. Juni 2009 um 22:12)

  • Hallo subzero007,

    dass überhaupt etwas in der msgbox ankam lag daran dass ich vergessen habe die Zeile von deinem Beispiel zu löschen. Ich hatte aus Versehen ein Leerzeichen zuviel, also hat StringReplace nie etwas gefunden. So funktioniert es wenn die Zeilen son aufgebaut sind wie in Post #1 beschrieben. Also in einer Zeile "mac: " bzw. "ip: ", danach noch der entspechende Wert und sonst nichts steht!

    [autoit]

    $file = FileOpen("test.txt", 0)

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

    ; Prüfen, ob Datei eingelesen wurde
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    ; Zeilen des Textes einlesen bis EOF
    While 1
    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $text = StringReplace($line, "mac: ", "")
    if @extended > 0 then MsgBox(0,"Mac-Adresse",$Text)
    $text = StringReplace($line, "ip: ", "")
    if @extended > 0 then MsgBox(0,"IP:",$Text)
    ;MsgBox(0, "Zeile gelesen:", $line)
    Wend

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

    FileClose($file)

    [/autoit]

    Edit1: Das Skript von @Darknoop funktioniert bei mir auch, wenn ich für $file den richtigen Namen angebe,
    Edit2: dann muss aber die Reihenfolge (Mac/IP) immer die gleiche sein (Zeile1: mac: / Zeile2: ip:)

    mfg (Auto)Bert

    2 Mal editiert, zuletzt von AutoBert (7. Juni 2009 um 22:57)

  • danke

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."