Verwende statt $name0...n ebenfalls ein Array ($aNames), das dieselbe Anzahl Elemente hat, wie das IP-Array. Und dann in einer Schleife abarbeiten.
Beiträge von BugFix
-
-
Ich habe mal die Anregungen aus der Diskussion aufgenommen und die Funktion angepasst. Im Startpost findet ihr die v0.2.
-
Zitat
Und hoffentlich nicht bei wish gekauft.. ?
Nee, bei "Ich bin doch nicht blöd" und "Pluto"

-
Mal am Rande:
Ich habe die Erfahrung gemacht, dass USB 3.0 eher selten funktioniert.
Trotz installierter 3.0 Treiber und sichtbarem 3.0 Hub im Gerätemanager werden die Laufwerke / Sticks nicht als 3.0 erkannt und laufen auf dem 3.0 Port langsamer als am 2.0 Port. Den Effekt habe ich auf verschiedenen PC mit Windows 7 / 10.
Die verwendeten Laufwerke / Sticks sind allesamt hochwertige Produkte (SanDisk, WD, Samsung).
-
Man kann mit Baukästen arbeiten. Aber wo bleibt da der Spaß?

Außerdem ist eine damit erstellte Seite voll mit unnützen Dingen. Schreibe es selbst, ist so schwer nicht.
-
Wenn ich nun jeden Nutzer rein schreibe, dann würde das Programm vermutlich den erste nehmen
Ja das Programm wird an 2 PC genutzt aber mehrer Nutzer melden sich an dem gleichen PC an.
Das ist jetzt unklar. - Also ganz konkret: Arbeiten zeitgleich mehrere Benutzer mit dem Programm? - Wenn nicht, funktioniert es doch mit dem oben beschriebenen Weg: Bei Anmeldung eines Users in die INI den aktuellen Usernamen reinschreiben, den dann das Programm beim Start nutzt um die zu überwachende Nummer aus der INI für diesen User zu wählen..
-
Problem ist, dass jeder auch eine eigene Telefonnummer hat und wir einen Computer nutzen.
Also ihr nutzt das Programm nur an einem einzigen PC. An diesem ist dann User-A ODER User-B ODER User-XYZ angemeldet?
Dann gehe doch so vor:
- Username des angemeldeten Users ist: @UserName
- In die INI für deine Telefonsoftware kommt eine Sektion für jeden User (wie schon in Posts vorab empfohlen)
Ich weiß nicht ob die Telefonsoftware automatisch startet oder manuell aufgerufen wird. Daraus ergeben sich dann folgende Varianten.
- manuell: Covere den Programmaufruf in einem Skript, dass zuerst denn aktuellen User in die INI schreibt und danach das Programm öffnet (das weiß nun: "aktueller User = A" - schaue unter "User-A" nach der zu überwachenden Rufnummer)
- automatisch: Ein ebensolches Skript wie bei manuell, muss im Autostart vor dem Telefonprogramm aufgerufen werden.
-
Wenn man längere Pattern schreibt, sind Kommentare sehr sinnvoll (gerade, um auch einem anderen die Möglichkeit zu geben, das Pattern nachzuvollziehen).
Hier mal ein Pattern zum Splitten eines Windows/UNC-Datei-Pfades in: Lw | Ordner[optional] | Datei-mit-Erweiterung | Dateiname | Erweiterung.
Die jeweilige Capturegroup beginnt immer mit einem Kommentar, der auf den Inhalt der Group verweist:
'^(?i)((?#drive)[a-z]:|\\\\[a-z0-9]+)\\((?#folder)[^/:*?"<>|\r\n]*\\)?((?#file)((?#filename)[^\\/:*?"<>|\r\n]+)\.((?#extension)\w+))$'
Wir erhalten ein Ergebnisarray mit 5 Elementen (bei z.B. "Lw:\Datei.ext" bleibt Ordner leer):
C
Alles anzeigen$sFile = "C:\CODE\AutoIt\Das.ist.eine.Test.au3" $sPatt = '^(?i)((?#drive)[a-z]:|\\\\[a-z0-9]+)\\((?#folder)[^/:*?"<>|\r\n]*\\)?((?#file)((?#filename)[^\\/:*?"<>|\r\n]+)\.((?#extension)\w+))$' $aSplit = StringRegExp($sFile, $sPatt, 3) ConsoleWrite( _ 'Laufwerk: ' & $aSplit[0] & @LF & _ 'Ordner: ' & $aSplit[1] & @LF & _ 'Datei m. Erw.: ' & $aSplit[2] & @LF & _ 'Dateiname: ' & $aSplit[3] & @LF & _ 'Erweiterung: ' & $aSplit[4] & @LF) #cs Ergebnis: Laufwerk: C: Ordner: CODE\AutoIt\ Datei m. Erw.: Das.ist.eine.Test.au3 Dateiname: Das.ist.eine.Test Erweiterung: au3 #ce -
-
Ich verwende häufiger Reguläre Ausdrücke. Um nicht jedes mal zum Testen auf ein externes Tool zugreifen zu müssen, habe ich diese Funktion erstellt, die die Ergebnisse (meist Arrays) gleich fertig zur Konsolenausgabe aufbereitet und mir im Fehlerfall den Fehlerwert auch gleich als Text ausgibt. Für den einfachen Check erscheint dann "MATCH!" oder "NO MATCHES" statt "1" oder "0". Ich bin da eher der "Text-Mensch"

Von den Parametern und erweiterten Rückgabewerten (@error, @extended) verhält sich die Funktion identisch zu StringRegExp.
Vielleicht ja auch für euch nützlich.
Code
Alles anzeigen; #FUNCTION# ==================================================================================================================== ; Name ..........: _RegexTest ; Description ...: A covered StringRegExp function. In case of match check (flag 0) it returns '>> MATCH!' or '!> NO MATCHES'. ; Otherwise it returns the matches from the result array as string. One value in each line. ; Syntax ........: _RegexTest($_sTest, $_sPattern[, $_iFlag = 0]) ; Parameters ....: $_sTest - The string to check. ; $_sPattern - The regular expression. ; $_iFlag - [optional] The flag to use with StringRegExp. Default is 0. ; $_iOffset - [optional] The string position to start the match. Default is 1. ; Return values .: Succes With flag 0: 'MATCH' or 'NO MATCHES', otherwise a string with all matches, one value in each line. ; Failure The occured error as text. Also the macros @error & @extended like filled from StringRegExp ; Author ........: BugFix ; =============================================================================================================================== Func _RegexTest(ByRef $_sTest, $_sPattern, $_iFlag=0, $_iOffset=1) Local $aResult = StringRegExp($_sTest, $_sPattern, $_iFlag, $_iOffset) Local $iErr = @error, $iExt = @extended, $sErr = '!> REGEX-ERROR [Flag=' & $_iFlag & ']: ' If $iErr Then Switch $_iFlag Case 0 $sErr &= 'Bad Pattern' Case Else If $iErr = 1 Then $sErr &= 'Array is invalid. No matches.' Else $sErr &= 'Bad pattern, array is invalid. Offset of error in pattern: ' & $iExt EndIf EndSwitch Return SetError($iErr, $iExt, $sErr) EndIf Local $sReturn = '' Switch $_iFlag Case 0 $sReturn = $aResult ; 0 if no match Case 1, 2, 3 For $i = 0 To UBound($aResult) -1 $sReturn &= $aResult[$i] & @LF Next Case 4 For $i = 0 To UBound($aResult) -1 For $j = 0 To UBound($aResult[$i]) -1 $sReturn &= ($aResult[$i])[$j] & @LF Next Next EndSwitch If $sReturn == 0 Then $sReturn = '' Return SetError(0, $iExt, ($sReturn = '' ? '!> NO MATCHES' : ($sReturn = 1 ? '>> MATCH!' : $sReturn))) EndFunc ;==>_RegexTest -
Dazu findet man zwar Beiträge, aber da geht es dann um alternative LEXER usw.
Falls jemand dbzgl. einen einfachen Weg kennt, kann sie/er ihn hier gerne posten.
Ich hatte mal angefangen einen au3-LEXXER in Lua zu schreiben. Bin dann aber gescheitert, weil die verwendete Scintilla-Version von SciTE4AutoIt dermaßen alt ist, dass wesentliche Funktionen im integrierten Lua (z.B. zum Ein-/Ausrücken; Erfassen der Einrücktiefe etc.) gar nicht enthalten sind. Und eine Hochsprache zu lernen, um einen Lexxer zu schreiben ist mir dann doch too-much.
-
danach MÜSSEN 2 @TABs folgen
Nicht ganz. In der Zeile müssen vor der Ziffer zwei TAB enthalten sind, nicht zwingend direkt aufeinander folgend. Es geht z.B. auch: "Bla" & @TAB & "Blub" & @TAB & @ScriptLineNumber
Damit man mit den TAB für die pinke Ausgabe nicht so rumeiern muss, hier der Einfachheit halber ein Funktion um pink in die Konsole zu schreiben:
Code
Alles anzeigen_ConsolePink('In diesem Text werden alle Leerzeichen durch Unterstrich ersetzt.', '_') ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ConsolePink ; Description ...: Ausgabe in die SciTE-Konsole in pinker Farbe ; Syntax ........: _ConsolePink($_sText[, $_sSpaceRepl = @TAB[, $_vJumpNum = @ScriptLineNumber]]) ; Parameters ....: $_sText - Der auszugebende Text. Enthaltene Leerzeichen werden mit $_sSpaceRepl ersetzt. ; Kein abschließender Zeilenumbruch erforderlich. ; $_sSpaceRepl - [optional] Ersetzungszeichen für Leerzeichen. Standard ist @TAB (identisch: -1 oder Default). ; $_vJumpNum - [optional] Eine erforderliche Ziffer/Zahl, optional im Wert. Standard ist @ScriptLineNumber. ; Mit Doppelklick auf die Zeile in der Konsole wird die Skriptzeile mit dieser Nummer angesprungen. ; Return values .: None ; Author ........: BugFix ; =============================================================================================================================== Func _ConsolePink($_sText, $_sSpaceRepl=@TAB, $_vJumpNum=@ScriptLineNumber) If $_sSpaceRepl = -1 Or $_sSpaceRepl = Default Then $_sSpaceRepl = @TAB $_sText = StringRegExpReplace($_sText, '(\s+)', $_sSpaceRepl) & @TAB If $_sSpaceRepl = @TAB Then If @extended = 0 Then ; erst ein TAB in der Zeile $_sText &= @TAB EndIf Else $_sText &= @TAB EndIf ConsoleWrite($_sText & $_vJumpNum & @CRLF) EndFuncEDIT:
Der Vollständigkeit halber: style.errorlist.12 gilt bei erstem Zeichen - und auch bei < .
-
-
If StringInStr("d,m,y,w,h,n,s", $sType) = 0 Or $sType = "" Then
Zumal die case-sensitive Prüfung auf fehlerhafte Eingabe sogar noch kürzer ist:
If Not StringRegExp($sType, "[DMYWhms]") Then
Müssen wir halt mit leben...

-
Schaut mal bitte in diesen Thread (Post #6 ff.). Hier geht es um die Diskussion der richtigen Darstellung von Minuten (mm oder nn).
Es sollte bitte niemand aus der Implementierung der Minutenangabe in der Date.au3 als n ableiten, dass dieses die gültige Minutendarstellung ist. Hier hat Jos einfach nur den bequemsten Weg gewählt, und um eine Unterscheidung von Groß- und Kleinschreibung zu sparen, den Parameter n für Minutenrechnung festgelegt. DAS ist aber ausschliesslich eine RECHENANWEISUNG und keine normgerechte Minutendarstellung.
Für Zeitdarstellungen gilt die ISO 8601: hh:mm:ss,f Das f bedeutet: Dezimale Bruchteile (fraction).
Hätte man sicher in der UDF auch so implementieren können. Doch dem Ersteller stand es ja frei, wie er seine Parameteranweisungen definiert. Für uns ist es nur von Belang zu beachten, dass dieses eben nur für diese UDF gilt.
-
@Musashi
Das ist nur für Datumsoperationen mit AutoIt von Belang, da die Date-UDF hier leider sehr schlampig ist und Großbuchstaben nicht von Kleinbuchstaben unterscheidet. Statt dessen ein n für Minuten zu erfinden, was durch keine Norm gedeckt ist, ist etwas speziell. Für eine Beschreibung darf n keinesfalls als Minutenwert stehen.
Außerdem geht es hier eindeutig nicht um Datumsoperationen, sondern um Zeitmessung. Somit können wir die Fehler der Date-UDF außen vorlassen und normgerecht Stunden, Minuten, Sekunden und Millisekunden bezeichnen.
-
richtig wäre doch wohl hh : nn : ss.mm
Laut Norm (ISO 8601) gilt: hh:mm:ss,f f steht für dezimale Bruchteile (fraction)
hh : mm : ss:hss
Das passt demzufolge auch nicht, da du hss, wie du schreibst, einfach mal so erfunden hast.

-
Was Stabilität angeht ist Win XP SP3 {vollständig optimiert} tatsächlich unschlagbar. Win 7 kommt dem recht nahe, Folgeversionen glänzen vor allem durch Surprise-Surprise.

Auch im medizinischen Bereich gibt es noch viele XP Systeme, i.d.R. "darf" die Technik bleiben, solange nur eine Intranetanbindung besteht oder sie als Standalone arbeitet.
-
Input Start date in the format "YYYY/MM/DD[ HH:MM:SS]"
Ein Datum MUSS enthalten sein.
Grr - Oscar war schneller.

-
Ich muss mal in meinem Archiv nachsehen, dort ist bestimmt noch eine unter XP laufende VollVersion von SciTE. Verwende das auch auf einem alten Firmen-PC mit XP. Das ist die letzte Version, in der Dateien noch nicht als UTF8+BOM gespeichert werden müssen.