Vielen Dank =)
die Lösung kann so simpel sein...
Vielen Dank =)
die Lösung kann so simpel sein...
Hallo zusammen,
ich stehe momentan etwas auf dem Schlauch. Ich habe ein kleines Script gebastelt dessen Ziel es einen Angegebenen IP Adressbereich in eine IP Liste auf zu lösen (z.B. 192.168.0.1 - 192.168.0.10 in 192.168.0.1, 192.168.0.2, 192.168.0.3 usw.), dazu werden noch andere Angaben vom User eingegeben und in der Zieldatei verarbeitet.
Mein Problem ist nun folgendes. Wenn ich den Adressbereich 192.168.0.1 - 192.168.0.10 angebe funktioniert alles wie gewollt.
Gebe ich den Bereich192.168.0.90 - 192.168.0.110 gibt es Fehler....
Durch verschiedene Tests habe ich heraus gefunden dass das Problem wohl in der Zeile 60 des Scripts liegt. Das Script erkennt hier beim ersten Beispiel dass 1 kleiner ist als 10, im zweiten Beispiel aber nicht das 90 kleiner ist als 110...
Ich weiß nicht mehr weiter und hoffe das einer von euch meinen Denkfehler findet...
Falls noch was fehlen sollte einfach Fragen.
anbei der Quellcode...
[autoit]#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
$von = 0
$bis = 0
$server = 0
$kunde = 0
$while = 0
$err = 1
#Region ### START Koda GUI section ### Form=c:\scripte\ip liste erstellen\gui.kxf
$Form1_1 = GUICreate("Form1", 177, 264, 1323, 317)
$Adressbereichvon = GUICtrlCreateInput("Adressbereich von:", 16, 72, 145, 21)
$Adressbereichbis = GUICtrlCreateInput("Adressbereich bis:", 16, 104, 145, 21)
$FQDN = GUICtrlCreateCheckbox("FQDN", 16, 168, 57, 33)
$Kundenname = GUICtrlCreateInput("Kundenname", 16, 8, 145, 21)
$DNS = GUICtrlCreateInput("DNS Server", 16, 40, 145, 21)
$Create = GUICtrlCreateButton("Liste erstellen", 16, 208, 145, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While $while = 0
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Create
$von = GUICtrlRead($Adressbereichvon)
$bis = GUICtrlRead($Adressbereichbis)
$server = GUICtrlRead($DNS)
$kunde = GUICtrlRead($Kundenname)
If _fddf($von) = 0 Then
MsgBox(0,"FALSCHEINGABE","Der Startwert wurde nicht im korekten Format eingegeben (XXX.XXX.XXX.XXX)")
$err = 1
ElseIf _fddf($bis) = 0 Then
MsgBox(0,"FALSCHEINGABE","Der Endwert wurde nicht im korekten Format eingegeben (XXX.XXX.XXX.XXX)")
$err = 1
ElseIf _fddf($server) = 0 Then
MsgBox(0,"FALSCHEINGABE","Die ServerIP wurde nicht im korekten Format eingegeben (XXX.XXX.XXX.XXX)")
$err = 1
ElseIf $kunde = "" Then
MsgBox(0,"FALSCHEINGABE","Es wurde kein Kunde angegeben")
$err = 1
Else
MsgBox(0,"Eingabe akzeptiert","Liste wird erstellt")
$err = 0
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $err = 0 Then $while = 1
WEnd
$von = StringSplit($von,".")
$bis = StringSplit($bis,".")
;_arrayDisplay($von)
;_arrayDisplay($bis)
FileWrite("IP Liste.txt","Kunde: " & $kunde & @CRLF & "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
FileWrite("IP Liste.txt","DNS Server: " & $server & @CRLF)
While 1
FileWrite("IP Liste.txt","Client: " & $von[1] & "." & $von[2] & "." & $von[3] & "." & $von[4] & @CRLF)
MsgBox(0,"",$von[4] < $bis[4])
If ($von[4] < $bis[4]) Then
$von[4] = $von[4] + 1
Else
ExitLoop
EndIf
WEnd
FileWrite("IP Liste.txt","END OF FILE")
Func _fddf ($ip)
If StringRegExp($ip,"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})",0) Then
Return 1
Else
Return 0
EndIf
EndFunc
Genau das habe ich gesucht aber nirgends gefunden...
Vielen Dank
Hallo zusammen,
ich bin gerade dabei ein Programm zu schrieben das wie folgt ablaufen soll:
Das Programm wird Parallel zu einer weiteren Software gestartet.
Alle 0,7 Sekunden wird überprüft ob von der anderen Software eine bestimmte
Datei in ein bestimmtes Verzeichnis geschrieben wurde. Wenn die Datei
auftaucht, wird die Datei verarbeitet.
Nun kann es passieren das dass Parallel arbeitende Programm mehrfach gestartet
wird. In diesem Fall wäre es sinnlos meine Software nochmals zu starten.
Nun ist die Frage wie ich dies verhindern kann.
Ich habe mir die Möglichkeit angesehen nach bestimmten Prozessnamen zu
suchen.
Lösen tut dies mein Problem leider nicht, da ich ja erst suche wenn ich mein
Programm bereits gestartet habe somit Grundsätzlich ein Prozess mir dem eigenen
Namen vorhanden sein wird.
Hat jemand eine Idee?
Langsam wird das ganze klarer...
Vielen Dank für die Erläuterung.
Vielen Dank, das Script tut genau dass was ich versuch habe zu erreichen. Ich versteh zwar die Logik dahinter gerade nicht...
Aber da muss ich mich jetzt wohl durchdenken. =)
Hallo zusammen,
@raupy
zu 1.
eine Beispieldatei könnte wie folgt aussehen.
4851111Uninteresanter Text
8792242Text der auch nicht Interesant ist
9871235Text den ich auch nicht brauche
5586228Der Text den ich will
0156228Noch einen Text den ich will
zu 2.
in der Schleife war so natürlich ein Fehler.
Ich habe die Schleife nun leicht angepasst, und das Array $erg vorangehend deklariert.
While $groese>0
$test=$tmp[$groese]
$erg[0] = $erg[0] & StringRegExp($test,"(?<=\d\d\d6228).+",3)
$groese = $groese-1
WEnd
Nun sollte doch meiner Logik nach aus dem ersten Feld des Arrays $tmp der höchste Index ausgelesen und in $groese geschrieben werden. (z.B. 5)
danach wird geprüft ob $groese größer als 0 ist. Dies trifft beim ersten druchgang zu.
Also wird der Wert aus $tmp beim Index $groese in $test geschrieben.
danach wird der String mit dem Ausdruck verglichen, falls dieser Zutrifft wird das Ergebnis mit dem bisherigen Inhalt von $erg in das Array geschrieben?
Was aber passiert ist, dass für jeden Durchgang eine 1 in das Array geschrieben wird...
Gewollt wäre das jeweils NUR der Text in das Array geschrieben wird, wenn der RegEx eine Übereinstimmung findet.
Wenn noch irgendwelche Infos fehlen, einfach Bescheid geben.
$var
Beide Patterns führen zum selben Ergebnis
Hallo zusammen,
ich bin seit einiger Zeit am Verzweifeln.
Ich versuche gerade ein kleines Tool zu schreiben, das folgende Aufgabe erfüllen soll.
Ich habe eine txt Datei, in der eine unbekannte Anzahl an Zeilen sind. Die Zeilen beginnen immer mit drei Zahlen, danach folgen 4 Ziffern gefolgt von einem Text.
Ziel ist es, aus der Datei alle Texte aus den Zeilen die mit XXX6228 beginnen auszulesen. In jeder Quelldatei ist mindestens eine solche Zeile vorhanden. Maximal sind diese nicht begrenzt.
Die Texte sollen mit einem Komma als Trennzeichen in eine neue Datei kopiert werden.
Hinter meinem (Lösungs)Ansatz steckt folgende Logik:
Die Quelldatei in ein Array einlesen-->Das Array Zeile für Zeile überprüfen und zutreffende Ergebnisse in die Zieldatei schreiben.
Momentan habe ich das problem das der Reguläre Ausdruck nicht das was ich Suche zurück gibt.
Hier mal der Entsprechende Quellcode:
[autoit]#include
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]#include
[/autoit][autoit][/autoit][autoit]$tmp=""
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]$exit=0
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]_FileReadToArray("C:\test\quelle.txt",$tmp)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit];_FileWriteFromArray("C:\test\Gelesen.txt",$tmp,0)
[/autoit][autoit][/autoit][autoit]$groese = $tmp[0]
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]While $groese>0
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]$test=$tmp[$groese]
[/autoit][autoit][/autoit][autoit]$erg = StringRegExp($test,"(?<=\d\d\d6228).+",3)
[/autoit][autoit][/autoit][autoit]$groese = $groese-1
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]WEnd
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]_ArrayDisplay($erg)
[/autoit]Kann mir irgendwer verraten was ich falsch mache?
Jetzt tuts
da befand sich das Problem mal wieder zwischen Stuhllehne und Tastatur.
Vielen Dank =)
Mein bisheriger Versuch ist
[autoit]WinWaitActive ("Druckerinstallations-Assistent")
[/autoit]allerdings habe ich auch schon ein
[autoit]Sleep(5000)
[/autoit]ausprobiert.
Beides leider Erfolglos.
Hallo zusammen,
ich habe bereits seit einigen Stunden das Problem, dass ControllClick einen Button nicht erkennt bzw. Ich nicht die Daten liefere mit denen der Button erkannt wird.
Ziel dieses Teil des Scriptes ist einen Drucker unter Windows XP einzurichten.
Meine bisherige Vorgehensweiße ist folgende.
Zuerst rufe ich den "Drucker hinzufüge Assistent" auf.
[autoit]run ("rundll32 printui.dll,PrintUIEntry /il")
[/autoit]Ab dann scheitert mein vorhaben schon. Ich schaffe es nicht AutoIt klarzumachen das es hier auf weiter klicken soll.
Laut dem AutoIT Window Info Tool besitzt der Button folgende Werte:
Titel: Button2
Text: &Weiter >
ID: 12324
Wenn ich das richtig sehe, müsste somit der ControllClick Befehl wie folgt lauten:
[autoit]ControlClick ("Button2" ,"&Weiter >",12324)
[/autoit]Wenn ich das so Probiere passiert... Nichts...
Was mache ich Falsch?
Danke schonmal für die Hilfe