Es gibt nur die folgende Möglichkeit:
[autoit]Local $array[2] = ['bla','blub']
$tmp = Eval('array')
For $i = 0 To UBound($tmp) -1
ConsoleWrite($tmp[$i] & @CRLF)
Next
Es gibt nur die folgende Möglichkeit:
[autoit]Local $array[2] = ['bla','blub']
$tmp = Eval('array')
For $i = 0 To UBound($tmp) -1
ConsoleWrite($tmp[$i] & @CRLF)
Next
Gewonnen hat bei mir mit haudünnem Vorsprung die Lösung von Bugfix.
Der hauchdünne Vorsprung entsteht dadurch, dass ich anweise, die 2.te Backreferenz nicht zu berücksichtigen (?:)
Ändere mein Pattern auf:
[autoit]$pattern = '(T\d+)(?:[^(^\r]*)(\([^)]*)'
[/autoit]
Dann sollte es passen.
Edit: Hab noch eine Korrektur vorgenoommen, nun passt es aber.
Hier eine Lösungsvariante:
[autoit]Local $aTest[7] = [ _
'N182 G74 Z-1 L1', _
'N183 G74 x200 Y-1 L1', _
'N184 G7', _
'N185 G93 X0 Y0 Z0', _
'N186 S1800 T3 M6 (HM - Schlichtfraeser D=20,0)', _
'N187 G39 C3=1', _
'N188 G74 Z-1 L1']
$pattern = '(T\d+)(?:[^(]*)([^)]*)'
[/autoit][autoit][/autoit][autoit]For $i = 0 To UBound($aTest) -1
$ret = StringRegExp($aTest[$i], $pattern, 3)
If @error Then ContinueLoop
ConsoleWrite('Werkzeug: ' & $ret[0] & ' ' & $ret[1] & ')' & @CRLF)
Next
Wäre es nicht konsequenter die lokale Deklaration außerhalb von Funktionen nicht zuzulassen?
Irgendwie kann man machen was man will, bei Dim ists ähnlich.
Meiner Meinung nach wäre wirklich konsequent, wenn Dim gestrichen wird und Local auch Local bedeutet. Also immer nur im aktuellen Deklarationsraum wirksam. Das würde sämtliche Irritationen ausschließen.
Kann sich mit dem Prüfen etwas hinziehen, man bekommt ja keinen freien Zugang zu diesem Rapidshare Gedöns.
Mir völlig unklar, wie man freiwillig solch einen bescheidenen "Dienst" nutzen kann. Zum Hosten gibt es doch freie Anbieter, ohne aufdringliche Werbung und mit Zugang für jedermann. (Z.B. DataFileHost)
Ich habe den Link erstmal rausgenommen. Werde mir das ganze nochmal in der Sandbox anschauen. Solange ist das Skript 'unter Verdacht'.
Wenn ich ein Ergebnis habe, werde ich das hier bekanntgeben. (Sollte es tatsächlich Schadsoftware sein, ist klar, was folgt.)
ZitatAlles anzeigenDLLIMPORT double moonpos( double* startdata, double hours_later, double* ret )
{
double Mpos0x = startdata[0];
double Mpos0y = startdata[1];
double Mpos0z = startdata[2];
ret[0] = Mpos0x;
ret[1] = Mpos0y;
ret[2] = Mpos0z;
return Mpos0x;
}
Du gibst ja tatsächlich nur die Startwerte zurück.
Übrigens ist mir nicht klar, was du überhaupt berechnen willst. ![]()
es war tatsächlich das große C, weshalb es nicht klappte. Mit kleinem c funktionierts.
Also, so muss es korrekt lauten: Send("^c")
![]()
Yep, das sieht die Hilfe ebenso:
Zitat von HilfeN.B. Some programs are very choosy about capital letters and CTRL keys, i.e. "^A" is different to "^a". The first says CTRL+SHIFT+A, the second is CTRL+a. If in doubt, use lowercase!
.. ich kann also nur Func´s includen ???
Nein, du kannst natürlich (und sinnvollerweise sollst du dies auch) Konstanten dort deklarieren.
Ich glaube ich verstehe, was du meinst: Im Include wird ein Array (Global) deklariert, welches du dann im aktuellen Skript bestückst.
In einigen Fällen macht das auch Sinn, aber ohne dein Skript zu sehen, kann ich nicht sagen, wo der Fehler liegt. Global deklarieren im Include und Wertzuweisung im laufenden Skript ist kein Problem.
Edit:
Zitatdann ist´s aber komisch, dass es beim ersten Aufruf immer funktioniert...
Ähm.. kann es sein, dass du die eingetragenen Werte bei einem neuen Aufruf des Skripts verwenden möchtest? DAS geht natürlich nicht! Das Array existiert nur so, wie es in deinem Include deklariert wird. Und bei jedem neuen Aufruf wird es mit diesem Status geladen.
Per #include werden aus einem 2ten Skript die Werte in selbiges Array reingeschrieben.
Sorry, aber wie schribst du Werte per #Include? Ein Include dient dazu, Funktionen (Funktionssammlungen) dem aktuellen Skript zur Verfügung zu stellen.
Übrigens: Alle Variablennamen müssen mit einem $ beginnen.
Ich habe deinen Text als Basis genommen. Wenn du das Skript ausführst, wird die selektierte Telefonnummer in die Console geschrieben.
Wenn das nicht klappt, entspricht dein verwendeter Text nicht dem von dir gezeigten Muster.
Übrigens kannst du Telefonnummern nicht anhand der Länge in Funk- oder Festnetznummern unterteilen. Da müsstest du schon die Vorwahl selektieren (Funk hat üblicherweise 015.., 016.., 017). Wobei da auch statt der führenden '0' stehen kann: '+49' oder '(0049)'. ![]()
Eines fällt mir noch ein: Es kann sein, dass in dem von dir gelesenen Text als Zeilenumbruch nur 'LineFeed' verwendet wird. Ersetze einfach mal das '\r' durch '\n' im RegExp-Pattern.
$str = _
'Beifahrerairbag, elektr. Schiebedach und Servolenkung, KontaktPrivat' & @CRLF & _
'60486 Frankfurt am Main' & @CRLF & _
'Deutschland' & @CRLF & _
'Tel.: +49 (0)173 6957630' & @CRLF & _
'Ausstattung Limousine' & @CRLF & _
'Farbe: Schwarz' & @CRLF & _
'Gebrauchtfahrzeug' & @CRLF & _
'Benzin' & @CRLF
$pattern = '(?:Tel.:\s*)(.*)(?:\r)'
[/autoit] [autoit][/autoit] [autoit]$ret = StringRegExp($str, $pattern, 1)
If IsArray($ret) Then ConsoleWrite('Telefon: ' & $ret[0] & @CRLF)
kurze Erklärung:
$pattern = '(?:Tel.:\s*)(.*)(?:\r)'
(?:Tel.:\s*)
?: = Inhalt dieser Klammern wird im Ergebnis nicht berücksichtigt
Tel.: = Text nach dem gesucht wird
\s* = Leerzeichen, keinmal od. beliebig oft
(.*) = das gesuchte Ergebnis, jedes Zeichen beliebig oft
(?:\r)
?: = Inhalt dieser Klammern wird im Ergebnis nicht berücksichtigt
\r = (bis zum) CarriageReturn
Hiermit kannst du prüfen ob ein Account besteht.
Zu dem Logon Datum hab ich grad keine Idee, dazu ist mir die AD-Materie zu fremd.
$strUserName = "kenmyer" ; <== gesuchter User Account
[/autoit][autoit][/autoit][autoit]$objConnection = ObjCreate("ADODB.Connection")
$objConnection.Open "Provider=ADsDSOObject;"
$objCommand = ObjCreate("ADODB.Command")
$objCommand.ActiveConnection = $objConnection
$objCommand.CommandText = _
";(&(objectCategory=User)" & _
"(samAccountName=" & $strUserName & "));samAccountName;subtree"
$objRecordSet = $objCommand.Execute
If $objRecordset.RecordCount = 0 Then
ConsoleWrite( "sAMAccountName: " & $strUserName & " does not exist." & @CRLF)
Else
ConsoleWrite( $strUserName & " exists." & @CRLF)
EndIf
$objConnection.Close
Edit
Hab hier was gefunden für die Logonzeit.
Kommandozeilenbefehl:
dsquery * -Filter "(&(objectcategory=computer)(operatingsystem=*windows 2000*))" -attr lastlogon name
Edit 2
Aber lies dir uf jeden Fall mal das hier durch:
http://blogs.technet.com/deds/archive/2…tive-logon.aspx
Hi,
alle Dateipfade in ein Array einlesen (_FileListToArray)
in einer Schleife für alle html-files nacheinander:
lies die html-Datei mit Fileread ein und lass den gesuchten Inhalt mit _StringBetween rausfiltern. (Funktion gibt Array zurück!)
Eine Variable führen wo du dann
"gefundener Titel"="Dateiname" & Zeilenumbruch
anfügst.
Wenn alle Dateien durch sind, die Variable in eine Ergebnisdatei schreiben (Filewrite)
Kann man nur einen Text neu zeichnen?
Stell dir das in etwa so vor:
- Grafik-Handle ist eine Tafel
- Pen-Handle ist die Kreide
- Bitmap- oder Text-Handle ist das, was mit Kreide aufgemalt wird
Du kannst mit der Kreide munter über die alten Inhalte malen. Aber du kannst nicht einen speziellen Kreidestrich entfernen, ohne dass davon der Rest betroffen wird.
Wenn du zum Bsp. 3 Texte nacheinander 'malen' willst und Nr. 2 entfernen, mußt du halt die Tafel abwischen und Text 1 und 3 nochmal 'malen'.
Naja, ist ja kein Aufwand ![]()
Global $array[80]; Array muß dann natürlich Inhalte haben.
For $i = 0 To UBound($array) -1
DirCreate("C:\Users\Administrator\Desktop\Namen\" & $array[$i])
Next
bis mir leider aufgefallen ist, dass am ende die zeichencodierung nicht stimmte (die umlaute werden in Hieroglyphen angezigt).
Dann schick mir mal so eine Datei (vor der Umwandlung), dann kann ich mal schauen, wo es hakt. Kannst ja evtl. datenschutzrelevante Inhalte aus-x-en.
Bevor ich mich da weiter reinlese: Warum machst du das nicht komplett in AutoIt?
Das schreit doch aufgrund seines Automatisierungsbedarfes geradezu nach AutoIt. ![]()