So:
[autoit]
If StringRegExpReplace(@IPAddress1, '(.+)\..+', '$1') = '10.1.0' Then
MsgBox(1, "", "Correct")
Else
MsgBox(1, "", "Incorrect")
Exit
EndIf
So:
[autoit]
If StringRegExpReplace(@IPAddress1, '(.+)\..+', '$1') = '10.1.0' Then
MsgBox(1, "", "Correct")
Else
MsgBox(1, "", "Incorrect")
Exit
EndIf
Also mein Script hat bloß 18 Zeilen. ![]()
Und Delimeter nicht getrennt, sondern als ganzes.
Stimmt! Hatte kurz vorm posten noch was geändert. Sorry!
Hab das Script jetzt angepasst. So funktioniert es.
Wenn die Funktion aufgerufen wird, wird in der Übergabe-Variable $wParam im LoWord die ID des angeklickten GUI-Control-Elements übergeben. Da im HiWord der Notification-Code übergeben wird, muss man diesen ausmaskieren. Das geschieht mit BitAND($wParam, 0x0000FFFF). So bleibt nur der Wert des LoWords über und den kann man dann mit der ID des GUI-Elements (hier der Combobox) vergleichen.
Das verrate ich hier nicht.
Nachher geben wir alle das gleiche Script ab. ![]()
Edit: Mein Script besteht Deinen Test übrigens fehlerfrei.
Edit2: Sollte man nicht noch einen Timer starten?
[autoit]
$iTimer = TimerInit()
_Check(1, _StringInStrCount($sText, "und", False, False, "", False), ![]()
; [...]
_Check(17, _StringInStrCount($sText, "", False, True, " ", False), 104)
ConsoleWrite(TimerDiff($iTimer) / 1000 & @CRLF)
Das kann man auch so:
[autoit]
$sText = "Und Bund rund Undelete und Fundbüro; Und. und! und? und'" & ' und" ' & "Und" & @LF & "Rund" & @CR & "Rund" & @CRLF & "Rund;" & @CRLF & "Aber Aberglaube labern makaber aber"
$tmp = StringRegExpReplace($sText, '\S', '')
MsgBox(0,0,@extended)
Lies die Inidatei einfach in ein Array, sortiere das Array und schreibe die Datei neu. Eine Inidatei ist doch auch bloß eine Txt-Datei.
Wobei man sich über den Sinn einer sortierten Inidatei streiten kann... ![]()
Ich hatte mal eine Funktion geschrieben, wo man nach Eingabe des Laufwerksbuchstabens einige Informationen (als Array) bekommt:
; Anfang Beispiel
#include<Array.au3> ; wird nur für _ArrayDisplay benötigt
$sDrive = 'c:'
$Ret = _GetDriveInfo($sDrive)
If IsArray($Ret) Then
_ArrayDisplay($Ret, 'Informationen über Laufwerk "' & $sDrive & '"')
Else
MsgBox(0, 'Fehler', $Ret)
EndIf
; Ende Beispiel
;===============================================================================
; Function Name: _GetDriveInfo($sDrive)
; Description:: Erweiterte Informationen zu einer Festplatte/USB-Stick
; Parameter(s): $sDrive = Laufwerksbuchstabe
; Requirement(s): ---
; Return Value(s): 2D-Array mit Bezeichnung und Wert (siehe Beispiel)
; Author(s): Oscar (http://www.autoit.de)
;===============================================================================
Func _GetDriveInfo($sDrive)
$sDrive = StringRegExpReplace($sDrive, '(?i)(.*)([a-z]{1}:)(.*)', '$2')
Local $sDriveType = DriveGetType($sDrive)
If $sDriveType <> 'Fixed' And $sDriveType <> 'Removable' Then SetError(1, 0, 1)
If Not FileExists($sDrive) Then Return SetError(1, 0, 1)
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $colItems = ''
Local $aPartition, $aPhysicalDrive, $aOut[14][2]
$objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
If Not IsObj($objWMIService) Then Return SetError(2, 0, 2)
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_LogicalDiskToPartition', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
If StringInStr($objItem.Dependent, '"' & $sDrive & '"') Then
$aPartition = StringRegExp($objItem.Antecedent, 'DeviceID="(.*)"', 3)
EndIf
Next
Endif
If Not IsArray($aPartition) Then Return SetError(3, 0, 3)
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDriveToDiskPartition', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
If StringInStr($objItem.Dependent, '"' & $aPartition[0] & '"') Then
$aPhysicalDrive = StringRegExp($objItem.Antecedent, 'DeviceID="(.*)"', 3)
EndIf
Next
Endif
If Not IsArray($aPhysicalDrive) Then Return SetError(4, 0, 4)
$aPhysicalDrive[0] = StringReplace($aPhysicalDrive[0], '\\', '\')
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_DiskDrive', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
If StringInStr($objItem.DeviceID, $aPhysicalDrive[0]) Then
$aOut[0][0] = 'Volume-Label'
$aOut[0][1] = DriveGetLabel($sDrive)
$aOut[1][0] = 'Serial-Nr. (Volume)'
$aOut[1][1] = DriveGetSerial($sDrive)
$aOut[2][0] = 'Model'
$aOut[2][1] = $objItem.Model
$aOut[3][0] = 'Serial-Nr. (Drive)'
$aOut[3][1] = StringMid($objItem.PNPDeviceID, StringInStr($objItem.PNPDeviceID, '\', 0, -1) + 1)
$aOut[3][1] = StringReplace($aOut[3][1], '&0', '')
$aOut[4][0] = 'Interface'
$aOut[4][1] = $objItem.InterfaceType
$aOut[5][0] = 'Size (Bytes)'
$aOut[5][1] = $objItem.Size
$aOut[6][0] = 'Media Type'
$aOut[6][1] = StringRegExpReplace($objItem.MediaType, '[^[:print:]]', ' ')
$aOut[7][0] = 'Total Cylinders'
$aOut[7][1] = $objItem.TotalCylinders
$aOut[8][0] = 'Total Heads'
$aOut[8][1] = $objItem.TotalHeads
$aOut[9][0] = 'Total Tracks'
$aOut[9][1] = $objItem.TotalTracks
$aOut[10][0] = 'Total Sectors'
$aOut[10][1] = $objItem.TotalSectors
$aOut[11][0] = 'Tracks Per Cylinder'
$aOut[11][1] = $objItem.TracksPerCylinder
$aOut[12][0] = 'Sectors Per Track'
$aOut[12][1] = $objItem.SectorsPerTrack
$aOut[13][0] = 'Bytes Per Sector'
$aOut[13][1] = $objItem.BytesPerSector
EndIf
Next
Endif
$objWMIService = ''
Return $aOut
EndFunc
Ein Leerstring als Suchwort ist an sich schon nicht praxisorientiert, IMHO. Mir fällt jedenfalls kein Beispiel ein, wo man sowas gebrauchen könnte.
Ich würde sogar so weit gehen zu sagen, dass dann eine Fehlermeldung zurückgegeben werden sollte.
Und wie Du ja bereits geschrieben hast, gibt es für die Stringlänge bereits einen Befehl.
Sieht gut aus! Sollte passen!
Meinen StringRexExpReplace-Pattern habe ich mit den Beispielen von oben getestet und damit passt das.
Wenn da doch noch andere Einträge auftauchen, dann musst Du (subzero007) mir so eine Datei mal per PN schicken, damit ich das Pattern anpassen kann.
Die erste Zeile löschen/überspringen wirst Du wohl allein hinkriegen, oder?
Und dann einfach jede Zeile so bearbeiten:
$string = 'CN=Server001,OU=Servers,OU=Test3,OU=ML,DC=xx,DC=Test,DC=com Beschreibung 1'
$string = StringRegExpReplace($string, 'CN=(.+?),OU=.+?,OU=.+?,OU=(.+?),.+DC=com (.+)', '$1, $2, $3')
MsgBox(0,0,$string)
Und damit man in den anderen Comboboxen auch etwas auswählen kann, sollte man eine Abfrage einfügen:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
GUICreate("Test", 300, 300)
[/autoit] [autoit][/autoit] [autoit]$combo = GUICtrlCreateCombo("Test", 10, 10, 200, 25, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, "Test 2|Test 3")
$combo_2 = GUICtrlCreateCombo("", 10, 50, 200, 25, $CBS_DROPDOWNLIST)
$combo_3 = GUICtrlCreateCombo("", 10, 90, 200, 25, $CBS_DROPDOWNLIST)
GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
[/autoit] [autoit][/autoit] [autoit]GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
Local $nID = BitAND($wParam, 0x0000FFFF)
If $nID = $combo Then
If GUICtrlRead($combo) = "Test" Then
GUICtrlSetData($combo_2, "|Combo|Combo 2|Combo 3|Combo 4")
GUICtrlSetData($combo_3, "|Benutzer|Benutzer 2|Benutzer 3|Benutzer 4")
ElseIf GUICtrlRead($combo) = "Test 2" Then
GUICtrlSetData($combo_2, "|Auto|Auto 2|Auto 3|Auto 4")
GUICtrlSetData($combo_3, "|User|User 2|User 3|User 4")
Else
GUICtrlSetData($combo_2, "|PC|PC 2|PC 3|PC 4")
GUICtrlSetData($combo_3, "|Notebook|Notebook 2|Notebook 3|Notebook 4")
EndIf
EndIf
Return $GUI_RUNDEFMSG
EndFunc
Wie kommst Du denn auf so eine Behauptung?
Natürlich gibt es USB-Sticks mit mehr als 40 GB (Beispiel).
Es gibt doch jede Menge Anbieter für temporäre (Wegwerf-) EMail-Adressen.
Einfach mal Google befragen: "temp email" und als erstes Ergebnis kommt: http://www.tempemail.net/
Zitat aus unseren Forenregeln:
ZitatFolgende Inhalte sind nicht erwünscht oder gar komplett verboten. [...]
- Automatisierung von Webseiten oder Tools, die das in ihren AGBs verbieten
Wir drehen den Spiess jetzt mal um: Zeig mir die Stelle in den AGBs von SO, in dem solch eine Automatisierung erlaubt ist.
Ich bin kurz vorm aufgeben...
Also...letzter Versuch: Bitte gehe meine obige Fragenliste Punkt für Punkt durch und versuche sie, so gut es geht, zu beantworten.
Meine Glaskugel ist gerade beim Polierer (war schon ganz schön abgenutzt). ![]()
Beschreibe Dein Problem genauer:
- Was steht in der Datei (am besten Datei posten)?
- Was kann dort noch alles drinstehen?
- Befinden sich die Werte immer in der gleichen Zeile? Immer hinter/vor einem Schlüsselwort?
- Was sind das für Vorgaben, die Du machst?
- Mit wie vielen Vorgaben soll der Wert verglichen werden?
- Wie und wo sind diese Vorgaben gespeichert?
- Was soll nach dem Vergleich geschehen?
- Wo ist Dein bisheriges Script?
Immer dran denken: Wir können keine Gedanken lesen!
Ich versuche mal aus Deinem Geschreibsel etwas herauszulesen...
Wenn die Datei nicht geöffnet wird, dann liegt sie vielleicht nicht im selben Verzeichnis wie das Script?!
Falls dem so ist, solltest Du bei FileOpen den Pfad zu der Datei mit angeben.
Außerdem: In Deinem Script gibt es gar kein FileReadLine().
Und was verstehst Du an FileReadLine nicht? ![]()
Ich hätte Dir ja jetzt den OnEvent-Mode empfohlen, aber mit dem Sleep in Deiner Schleife kann das nichts werden.
Während des Sleep-Befehls gibt Dein Script die Rechenzeit komplett an Windows ab.
Du musst also das TrayMenü im OnEvent-Modus benutzen und den Sleep-Befehl durch eine Timer-Schleife ersetzen.