Noch 'ne Variante:
[autoit]$text = 'Das ist ein Test'
$array = StringSplit($text, '')
$rueckwaerts = ''
For $i = $array[0] To 1 Step -1
$rueckwaerts &= $array[$i]
Next
ConsoleWrite($rueckwaerts & @CRLF)
Noch 'ne Variante:
[autoit]$text = 'Das ist ein Test'
$array = StringSplit($text, '')
$rueckwaerts = ''
For $i = $array[0] To 1 Step -1
$rueckwaerts &= $array[$i]
Next
ConsoleWrite($rueckwaerts & @CRLF)
Ich weiß ja nicht, was du ganz exakt mit dem Skript erreichen möchtest. Die Array-Operationen innerhalb der Schleife bremsen gewaltig. Muß das überhaupt sein?
Gib mal genau an:
- Zustand vorher
- gewünschter Zustand
könntest du mir aber bitte
==> $ret = StringRegExp(FileRead($file), '(?:EAN-Code: )(\d+)', 3) <== erklären ?
'(?:EAN-Code: )(\d+)' - ist das Suchmuster (Pattern)
(?:EAN-Code: ) - erster Ausdruck in Klammern (Backreferenz) dient zum Finden des Strings (EAN...)
?: ist die Anweisung: diese Backreferenz im Ergebnis nicht aufführen
(\d+) - zweite Backreferenz, ist zu berücksichtigen.
\d bedeutet Ziffer, + ist ein Quantifier und heißt mindestens 1-mal bis beliebig oft
Probier mal so:
[autoit]Local $vonDate = '2009/01/02'
Local $bisDate = '2009/01/03'
Local $array[3] = [ _
'01.01.2009,13:34:49, hallo', _
'02.01.2009,13:34:49, hallo2', _
'03.01.2009,13:34:49, hallo3']
For $i = 0 To UBound($array) -1
$Date = _strToDate(StringLeft($array[$i], 10))
If $Date >= $vonDate And $Date <= $bisDate Then ConsoleWrite(StringTrimLeft($array[$i], 21) & @CRLF)
Next
Func _strToDate($s)
Return StringRight($s, 4) & '/' & StringMid($s, 4, 2) & '/' & StringLeft($s, 2)
EndFunc
Du brauchst nur den letzten EAN? Das geht ganz fix mit RegEx:
[autoit]#include <File.au3>
$start= TimerInit()
$file = @ScriptDir & '\test_write.txt'
$ret = StringRegExp(FileRead($file), 'EAN-Code: \d+', 3)
ConsoleWrite('letzter EAN-Code: ' & $ret[UBound($ret)-1] & @CRLF)
ConsoleWrite('Zeit: ' & TimerDiff($start) & @CRLF)
[/autoit]Edit:
Und wenn du nur den numerischen Wert möchtest, dann so:
$ret = StringRegExp(FileRead($file), '(?:EAN-Code: )(\d+)', 3)
[/autoit]Und das hier könnte noch etwas schneller sein (hab mal eine Testdatei mit 2,7 MB verwendet [100600 Zeilen], _FileCountLines($file) ist der Zeitfresser. Mit 1,5 GHz braucht es 2,5 sec. bei mir :
#include <File.au3>
$start= TimerInit()
$file = @ScriptDir & '\test_write.log'
$lines = _FileCountLines($file)
$lastLog = ''
While 1
If Not StringInStr(FileReadLine($file, $lines), 'Temperatur:') Then
$lines -= 1
ContinueLoop
Else
Do
$zeile = FileReadLine($file, $lines)
$lastLog = $zeile & @CRLF & $lastLog
$lines -= 1
Until StringLeft($zeile, 1) = '['
ExitLoop
EndIf
WEnd
ConsoleWrite($lastLog & @CRLF)
ConsoleWrite('Zeit: ' & TimerDiff($start) & @CRLF)
Du kannst direkt die letzte Zeile lesen:
[autoit]#include< File.au3>
$file = 'Dein_Pfad_zur_Log'
$lines = _FileCountLines($file)
MsgBox(0, 'Inhalt letzte Zeile', FileReadLine($file, $lines))
Falls noch ein Zeilenumbruch zusätzlich enthalten ist, kann die letzte Zeile leer sein - dann halt: $lines-1
So kannst du dann in einer Schleife rückwärts die letzten 7 Zeilen deines Log-Blocks auslesen.
Kaum ist man mal ein WE weg - schon hat der GUN Geburtstag. ![]()
Also auch von mir nachträglich Alles Gute.
Wer sich mehr für Irrlicht interesiert: A. Percy pflegt im EN-Forum die Au3IrrLicht. http://www.autoitscript.com/forum/index.php?showtopic=70506&view=findpost&p=516602
Kann nicht bestätigt werden.
Das Skript von mir aus Post #4 läuft problemlos unter 3.3.0.0
OS: XP
Ich hab ein Problem, beide scripte funkzionieren bei mir nicht
He, du bist nun schon so lange dabei. Und dann solch eine magere Fehlerbeschreibung. ![]()
Für eine Bildschirmlupe ist AutoIt zu langsam, schätze ich ...
Da hast du dich aber gewaltig verschätzt. ![]()
Guckst du hier: https://autoit.de/index.php?page…19322#post19322
[Ps. Noch an BugFix: C:\Programme\AutoIt3.3\SciTe\API\User.Call.tips.api oder so ungefähr lautet der name einer SciTe Datei in der die Benutzer
zusätzliche Befehle und Konstanten eintippen können. Diese werden dann
wenn man ein Script am Screiben ist als einfüg hilfe angeboten.]
Was Calltipps sind, weiß ich. ![]()
Ich erstelle sie zu fast all meinen UDF meist gleich mit Skript zur automatischen Ergänzung der calltip.api.
Ich verstehe nur nicht in welchem Zusammenhang Calltipps mit deinem Problem stehen.
und diese dann nur in die API\User.Call.tip.api File von SciTe
Also mit dem Satz kann ich gar nix anfangen. Was willst du denn mit den Calltipps?
Und alles andere erledigt OrganizeIncludes für dich (Analyse des aktuellen Skripts, erforderliche Includes einbinden). Schau dir den Thread von Xenobiologist an, dort ist genau beschrieben, wie du es einrichten mußt.
Mal als Tipp:
Erstelle nicht für jede Versionsänderung deines Skripts einen neuen Thread. Das reißt auch alles aus dem Zusammenhang.
Editiere einfach deinen ersten Post und aktualisiere dort.
Damit die Änderung auch im Portal angezeigt wird, postest du dann in diesem Thread neu: Änderungen..... s. Post 1.
So, nun aber richtig.
Teste mal, ob es alle Gleichungen erfüllt.
ConsoleWrite(_Binom('-2x', '3y') & @CRLF)
[/autoit][autoit][/autoit][autoit]Func _Binom($a, $b)
Local $faktorA = Number(StringLeft($a, StringLen($a)-1))
Local $faktorB = Number(StringLeft($b, StringLen($b)-1))
Local $signA = StringRight($a, 1)
Local $signB = StringRight($b, 1)
Local $prod = 2*$faktorA*$faktorB
If $prod > 0 Then $prod = '+' & $prod
Local $2 = Chr(178), $sign = ''
If Not StringInStr($b, '-') Then $sign = '+'
Return '(' & $a & $sign & $b & ')' & $2 & ' = ' & $faktorA^2 & $signA & $2 & ' ' & _
$prod & $signA & $signB & ' +' & $faktorB^2 & $signB & $2
EndFunc
Intervallschachtelung ist doch ein rekursives Aufrufen einer Funktion. Und das kannst du natürlich auch in AutoIt machen. Achte aber darauf, dass die max. Rekursionstiefe nicht überschritten wird.
Müßen mußt du nicht.
Da hast du völlig recht. ![]()
Als ich am Schreiben meines Posts war, war deiner noch nicht gepostet. Somit hatte ich mich nicht auf deinen (völlig korrekten) Hinweis bezogen. Den Parameter Attach bei _IECreate hatte ich auch nicht bedacht.
Verstehe nicht ganz, was du jetzt möchtest. Soll eine grafische Auflösung der Funktion stattfinden, oder möchtest du ein Ergebnis haben?
Statt: _IECreate() mußt du _IEAttach() verwenden.