Beiträge von autoiter

Statement zur DSGVO im Forum

Alles zur DSGVO und zur Umsetzung im Forum hier: Statement zur DSGVO (letztes Update: 30.05.2018)

    Ich hab in die Script-Breaking-Changes geguckt aber konnte dort keinen Eintrag dazu finden.

    Im Bugtracker ist dazu auch nichts.

    Danke dir. Wundert mich im Nachhinein nicht. IDClOSE ist schon seit Ewigkeiten als Konstante in der MsgBoxConstants.au3. Ich habe bei google Docs ein Buch über .Net Framework von 2006 gefunden, in dem die Konstante auch so mit dem Wert 8 steht. Dieser Rückgabewert wurde von MS irgendwann gestrichen. Daher ist der Wert / die Konstante veraltet.

    In dem Skript (CSV-Editor von funkey), in dem mir das aufgefallen war, waren die MsgBoxConstants nicht eingebunden. Ich nehme an, dass sie bei einem Versionssprung in einem der includes eingebunden wurden, nachdem das Skript erstellt wurde..

    Hallo Leute,

    als ich heute ein älteres Skript geöffnet habe, bin ich über die Meldung gestolpert, dass die Variablen-Bezeichnung eines Schließen-Buttons bereits als Konstante deklariert sei ($idClose). Ich fand sie dann schließlich in der MsgBoxConstants.au3.

    Dort wurde irgendwann der Wert 8 ($IDCLOSE) ergänzt und als eine der möglichen Rückgaben genannt. Allerdings finde ich weder den Wert 8 noch die Konstante $IDCLOSE in der Hilfe zu MsgBox und auch bei Microsoft finde ich keine Erwähnung davon. Weiß jemand, was es damit auf sich hat?

    Hallo alpines

    UBound berechnet die Größe ja nicht, es ruft nur die bereits Abgespeicherte ab.

    Ubound ist bei meinen Tests immer mindestens doppelt so langsam, wie ein in einer Variable gespeicherter Wert. Ich habe dir zugestimmt, dass es schon sehr große Arrays sein müssen, bevor das auffällt. Aber man sollte es wissen, damit man sich in so einem Fall nicht wundert.

    Hey Leute,


    die Regex-Lösung von Andy finde ich klasse(, hätte den Einzeiler aber nicht hinbekommen). :)


    Hierzu:

    Bei If 999 Then fehlt nichts. Schau dir mal die Schleife mit Ubound an. Da wird in meinem sinnlosen Beispiel dasselbe gemacht.


    Sorry, du hast einfach nicht verstanden.


    Du redest von der For $i = 0 To UBound($aFile) -1 Step 1 

    Du schreibst selbst, dass man Ubound dann innerhalb der Schleife nicht mehr nutzen sollte. Allerdings war meine ursprüngliche Aussage ja genau auf diesen Fehler in deinem ersten Skript bezogen!

    AutoIt
    1. For $i = 0 To UBound($aFile) -1 Step 1
    2. If $i < UBound($aFile) -1 And StringLeft($aFile[$i], 3) = '# 2' And StringLeft($aFile[$i + 1], 3) = '# 1' Then

    Innerhalb der Schleife prüfst du bei jedem Durchlauf, ob schon das letzte Element erreicht ist. Davon habe ich abgeraten. Du hast das zitiert und "Nope".. gesagt. Daraufhin habe ich dir das Beispiel mit unterschiedlich großen Arrays und Schleifen gegeben, in denen nichts anderes passiert, als einmal eine statische Größe zu prüfen und eine immer neu ermittelte Größe zu prüfen...


    Aber richtig ist auch die Antwort von alpines , dass es meist vernachlässigbar ist. Eigentlich hatte ich mir das Skript geschrieben, um seine Aussagen nachvollziehen zu können.

    Hallo Bitnugger

    Nope... denn der Wert für UBound wird nur einmalig ermittelt... egal wie viele Zeilen das Array hat

    Das stimmt nur für die Zeile For $i = 0 To UBound($aFile) -1 Step 1 (auch wenn ich das Step 1 weglassen würde. Aber du bist eigentlich immer genauer als ich :D).

    Innerhalb der Schleife wird das wenigstens in AutoIt wohl erneut ermittelt.

    Hierzu:

    Sicher funktioniert das auch ohne Prüfung... das kann aber dazu führen, dass das Script abstürzt, wenn die Datei fehlerhaft ist.

    Du hast die Größe doch vorher ermittelt (mit Ubound). Wenn du die For-Schleife nicht beim letzten Element, sondern beim Vorletzten Element abbrichst, brauchst du doch nicht zu prüfen, ob du gerade im letzten Array-Element bist.

    Das Thema ist zwar schon gelöst. Aber da der Thread ja noch nicht alt und tot ist, schreibe ich dir meine Gedanken..

    chesstiger hat die einfachste Lösung genannt (trotz seines von mir verachteten Windows Bashing.

    Aber du kannst es auch so einfach und rudimentär machen, wie du es in deinem ersten Beitrag beschrieben hast. Hier würde ich es noch einfacher machen und immer nur einmal deinen Hotkey drücken. Wenn eines der beiden gespeicherten Fenster aktiv ist wird auf das andere gewechselt. Wenn du noch nicht zwei Fenster gespeichert hast oder ein anderes Fenster aktiv ist, wird es als das zweite aufgenommen. Das zuvor zweite Fenster (wenn vorhanden) wird auf Platz eins geschoben und das zuvor als erstes gespeicherte Fenster fliegt raus. Das wäre doch total profan umzusetzen.

    Hallo AutoMit

    Code
    1. For $i = 0 To UBound($aFile) -1 Step 1
    2. If $i < UBound($aFile) -1 And StringLeft($aFile[$i], 3) = '# 2' And StringLeft($aFile[$i + 1], 3) = '# 1' Then

    Ich möchte nur ergänzen, dass du den Code nicht ganz so übernehmen solltest. Ich habe den Code nicht getestet, bin aber sicher, dass er tut, was er soll. Jedoch sollte Ubound nicht in einer Schleife aufgerufen werden. Das kostet unnötig Zeit (abhängig von der Anzahl der Zeilen). Außerdem meine ich, die Prüfung in der Schleife ist gar nicht notwendig. Stattdessen sollte es auch so funktionieren:

    Code
    1. For $i = 0 To UBound($aFile) -2
    2. If StringLeft($aFile[$i], 3) = '# 2' And StringLeft($aFile[$i + 1], 3) = '# 1' Then

    Zu dem dem Skript aus Beitrag 4 möchte ich eine Kleinigkeit ergänzen. Die Größenermittlung in den Zeilen 14 und 15 sind nicht notwendig. Man kann wie in dem Beispiel in der Hilfe einfach die entsprechenden Flags verwenden, damit Größe und Position nicht geändert werden und bei den entsprechenden Angaben (X,Y, ..) auch 0 eintragen.

    _WinAPI_SetWindowPos($gui, $HWND_BOTTOM, 0, 0, 0, 0, BitOR($SWP_NOACTIVATE, $SWP_NOMOVE, $SWP_NOSIZE))

    Auch wenn er das im konkreten Fall nicht einsetzen möchte, kann es vielleicht ein Anderer gebrauchen (oder er in einem späteren Projekt).

    Das Prinzip gilt ja nicht nur für Dateien, sondern überhaupt für Arrays, wenn man Doppelte ausfiltern will und sowas kommt ja öfter vor.

    Das stimmt natürlich. :)

    Falls Du mal mehr Geschwindigkeit brauchst oder es im Source- und/oder Destordner zu voll wird (sehr viele Dateien), dann kannst Du auf das Dictionary-Objekt ausweichen.

    das hört sich interessant an Hast du da ein Beispiel parat?

    Ok, hier mal ein Beispiel:

    Aber meiner Meinung nach ist es egal ob ich mit meiner Methode 6 Sekunden benötige, oder mit deiner Methode 2 Sekunden.

    Wir haben maximal 500 Dateien im gesamten Verzeichnis. Und da kommt es auf ein paar Sekunden nicht an.

    Ich bin froh, dass ich kein Beispiel erstellt habe.. ;)

    Hallo AutoItler

    Dein Problem steht wohl nicht im Zusammenhang mit Windows 10, sondern mit den Änderungen in Firefox Quantum. Unter anderem wurden bei dem großen Update XUL-Plugins unbrauchbar, wodurch Mozrepl nicht mehr funktioniert.

    Du könntest also falls möglich auf IE-Funktionen umsteigen oder auf eine Vor-Quantum Version des Firefox wechseln oder besser die Webdriver UDF zur Firefox-Steuerung ausprobieren.

    Du findest sie hier.

    Statt einer Kombination von WM_NOTIFY vor WM_DROPFILES würde ich versuchen, in der WM_DROPFILES einen Check einzubauen, über welchem Control der Cursor ist, um das Drop-Event einem Control zuzuordnen.

    Ich hatte halt die Hoffnung, dass man anhand der PIID irgendwie den Dateinamen herausbekommen könnte...

    Naja warte mal ab. Hier gibt es ja deutlich hellere Geister als mich ;)