Beiträge von John8

    Hi,


    wenn du viel Wert auf Performance legst würde ich die ganz normale Array-Variante vorziehen.
    _ArrayAdd(...) braucht (wahrscheinlich) aufgrund des ständigen ReDims extrem lange, StringSplit(...) muss den Datensatz zum Schluss nochmals abarbeiten, deshalb ist auch diese Variante (etwas) langsamer als die Array Version.
    Hier mal ein Testskript, _E3() ist wie schon geschrieben am schnellsten:


    Zitat

    Muss ich dazu FileRead und strininstring machen oder gibt es eine bessere Möglichkeit?


    Ja, das wäre schon mal eine Möglichkeit.
    Ich glaube aber, dass es noch besser (schneller) wäre, größere Dateien zuerst in einzelne Zeilen/Abschnitte zu zerlegen.
    Eine Alternative zu StringInStr(...) wäre dabei StringRegExp(...), da reguläre Ausdrücke genutzt werden können und somit auch beispielsweise leicht nach mehreren Strings gesucht werden kann.


    Google sollte dir dabei auch helfen, besonders einige Links zum englischen Forum.


    Ansonsten gibt es schon derartige Suchprogramme, die schneller sind als sämtliche (pure) AutoIt Versionen, wie z.B. SearchMyFiles.

    Moin,


    was meinst du mit String in dem Fall? Kann doch prinzipiell alles sein...
    Möchtest du zwischen Zahlen und Buchstaben unterscheiden?
    Oder eine Suchfunktion, die Dateien nach einer bestimmten (vom Benutzer) angegebenen Zeichenkette durchsucht?

    Zitat von chesstiger

    Genau genommen ist es das ja auch, aber GUICtrlCreate... gibt ja nunmal ein Handle zurück.


    Wenn man es allerdings ganz genau nimmt, sollte man aber $id für AutoIt-Controls verwenden, oder?


    Zitat von www.autoitscript.com/wiki/UDF-spec

    $h - Handle, usually to a file or window. NB: AutoIt handled controls return IDs, and so use $id instead.
    $id - An AutoIt control Id.


    Edit: Ok, hast du ja schon editiert. :D

    Zitat

    Naja...wie zu erwarten wurden keine Abgaben getätigt. Somit ist diese Challenge gewinnerlos beendet, die Preise hab ich anderoweitig verschenkt.


    Gun-Food bitte schliessen


    Hm, finde ich irgendwie schade, auch wenn ich selbst nicht mitgemacht habe (einfach keine Idee gehabt).
    Hast dir ja auch Mühe gegeben.

    Zitat von Make-Grafik

    >> Aber ich möchte auch die Registry Einträge dazu haben. (Um mit Rechtsklick auf den entsprechenden Rechner agieren zu können)


    Das macht meiner Meinung nach nicht viel Sinn für ein portables AutoIt.
    Für mich heißt portabel, dass gerade diese Registry Einträge nicht genutzt/erstellt werden und das Programm keine (wenige) eigenen Spuren auf dem PC hinterlässt (oft auch aufgrund fehlender Rechte).
    Da könntest du doch genauso gut den offiziellen Installer auf dem Zielrechner nutzen, wenn du sowieso schon Registry Einträge vornimmst. ;)


    Dir sollten allerdings Programme wie Smarty Uninstaller oder Advanced Uninstaller, die eine Installation dokumentieren, dabei helfen.
    Auch nützlich kann Procmon.exe aus der SysinternalsSuite (btw sehr gute Programmsammlung) sein, denn das Programm hört ab, welche Änderungen ein Prozess am PC vornimmt.

    Hi,


    den Code bitte demnächst in einen Spoiler mit AutoIt Tags setzen.
    Bei GUICreate(...)sind eckige Klammern, die da gar nicht hingehören.
    In der Hilfe verdeutlichen diese nur, dass die Parameter nicht zwangsläufig gesetzt werden müssen, sprich optional sind.
    Deshalb kann man sie in deinem Fall ganz weglassen.



    Edit:
    Mist, zu langsam. :D

    Zitat von peethebee

    Macht's mir alle weiter so, auf die nächsten glorreichen Sieben!


    Auf jeden Fall!
    Alles gute AutoIt.de.


    Edit: Ich hoffe es wird noch (mindestens) bis zum Stack-Overflow weitergehen! :D
    _AutoItDE(2012)


    Func _AutoItDE($i)
    ConsoleWrite(@LF & 'Jahr: ' & $i)
    _AutoItDE($i+1)
    EndFunc

    Hi,


    Zitat

    Beispiel: Die Idee war eine Progessbar so lange durch laufen zulassen bis ShellExecute fertig ist.


    Das wird leider kaum möglich sein, da du ja nicht abschätzen kannst, wann ein externes Programm mit ShellExecute(...) gestartet ist.
    Folglich bringt eine Progressbar nichts und sie wird nur von 0 auf 100 "springen".


    Die If-Bedingung
    If $execute = 0 thenwird außerdem nie ausgeführt (oder nur wenn ein Fehler bei ShellExecute vorliegt), da der Wert von ShellExecute in eine Variable geladen wird, die sich nicht automatisch aktualisiert.