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?"
inhalt Txt in inputfeld
-
- [ offen ]
-
subzero007 -
7. Juni 2009 um 13:47 -
Geschlossen -
Erledigt
-
-
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? -
Hallo,
[autoit]
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
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.3wie kann ich inherhalb der txt suchen und das was nach mac; in das inputfeld schreiben?
-
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
[/autoit][autoit][/autoit][autoit]
If $file = -1 Then
MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
Exit
EndIf; Zeilen des Textes einlesen bis EOF
[/autoit][autoit][/autoit][autoit]
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
MsgBox(0, "Zeile gelesen:", $line)
WendFileClose($file)
[/autoit]Fileread line ist schonmal der ansatz aber habe echt keine idee was ich dann machen sollte bitte noch einen Tipp
-
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>
[/autoit][autoit][/autoit][autoit]
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)If FileExists(@ScriptDir & "\Adresse.ini") Then GUICtrlSetData($Input,IniRead(@ScriptDir & "\Adresse.ini","Informationen","Adresse",True)) ;Lesen
[/autoit][autoit][/autoit][autoit]
GUISetState(@SW_SHOW)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button
IniWrite(@ScriptDir & "\Adresse.ini","Informationen","Adresse",GUICtrlRead($Input)) ;Schreiben
EndSwitch
WEndDie Datei wäre so aufgebaut:
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 -
Alles klar,
Jetzt hab ichs verstanden, du kannst das ganze mit StringSplit machen sieh z.B. diese Beispiel hier:
[autoit]
[/autoit]
$string = "mac;XX:XX:XX:XX"
$split = StringSplit($string,"mac;",1)
MsgBox(0,"","die mac adresse ist: " & $split[2])StringSplit teilt den String an den von dir angegebenen Zeichen, diese werden dann in ein array geschrieben
[autoit]
teilt man zB. flogenden string an den ";"-Zeichen :$str = "teil1;teil2;teil3;teil4"
[/autoit]dann sieht das array so aus:
[autoit]$a[1] = "teil1"
[/autoit]
$a[2] = "teil2"
$a[3] = "teil3"
$a[4] = "teil4"edit
hab mir mal die arbeit gemacht und ein program zu deinen angaben oben geschrieben, dort sieht der string so aus:mac:blablabla
ip:blablablamein programm hier geht genau nach diesem muster:
[autoit]#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit];Datei zum einlesen
[/autoit][autoit][/autoit][autoit]
$File = ""If FileExists($File) Then
[/autoit][autoit][/autoit][autoit]
;Datei einlesen
$String = FileRead($File)
;Zeilenumbrüche durch : ersetzen und String spliten:
$Split = StringSplit(StringReplace($String, @CRLF, ":"), ":", 1)
Else
Exit
EndIfGUICreate("test", 162, 54, 331, 153)
[/autoit][autoit][/autoit][autoit]
$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)While True
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEndMfG
Darknoop -
Super das habe ich soweit verstanden;
aber wie suche ich in txt nach der mac also nach dem string?? -
Hallo subzero007,
ich würde StringReplace einsetzen:
[autoit]$file = FileOpen("test.txt", 0)
[/autoit][autoit][/autoit][autoit]; Prüfen, ob Datei eingelesen wurde
[/autoit][autoit][/autoit][autoit]
If $file = -1 Then
MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
Exit
EndIf; Zeilen des Textes einlesen bis EOF
[/autoit][autoit][/autoit][autoit]
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)
WendFileClose($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:??
-
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
[/autoit][autoit][/autoit][autoit]
If $file = -1 Then
MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
Exit
EndIf; Zeilen des Textes einlesen bis EOF
[/autoit][autoit][/autoit][autoit]
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)
WendFileClose($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
-
danke