Liste sortieren

  • Hallo Freunde der automatisierten Schritte,

    wenn das Array sortiert wird, erfolgt keine Ausgabe der sortierten Liste über consoleWrite bzw. FileWrite ... wo liegt der Fehler?

    Deaktiviere ich die Zeile "_ArraySort($Prozesse)", funktioniert das Script 1a. Nur dann fehlt die Sortierung.

    Übrirgens - gibt es für Scite eine Möglickeit per Shortcut immer so viele Tabs einzufügen bis zur Spalte 53?

    Beispiel:


    AutoIt
    _ArrayDisplay($Prozesse)							; 	Prozesse anzeigen
    _FileWriteFromArray('Prozesse_1.txt', $exe)			                ; 	Prozessliste in eine Datei schreiben
    
    
    Semikolon soll stets an der gleichen Stelle sein, auch wenn die Befehlszeile davor unterschiedlich lang ist. Gibt es dafür in Scrite einen Hotkey, der die entsprechende Anzahl der Tabs berechnen und setzten kann?


    Viele Grüße
    AutoMitListe

    • Offizieller Beitrag

    Sieh Dir mal das Ergebnis von ProcessList an. Im Element [0][0] steht normalerweise die Anzahl der Array-Elemente.
    Wenn Du das Array sortierst, dann passiert es u.U. das da ein anderer Wert steht. Im weiteren Verlauf benutzt Du diesen Wert für das dimensionieren des neuen Arrays und für Deine For-Schleife.
    Die einfachste Abhilfe wäre, nicht die Processlist zu sortieren, sondern nach der For-Schleife das $exe-Array.

  • Shortcut:

    Drück einfach TAB, nachdem du die Zeilen markiert hast. Alle markierten Zeilen wird dann ein Tab vorangestellt. Mit SHIFT+TAB
    übrigens wieder entfernt. Für so Kommentare wüsste ich so keins, müsste man vermutlich selbst schreiben. Halte ich aber nicht

    unbedingt für sinnvoll...
    Bei dem andern:
    EDIT: Oscar hats ja gesagt.
    Ich finde es generell blöd, dass manche Funktionen die Menge an den Anfang schreiben, das ist eigentlich unnötig und sorgt eher für
    Probleme. Für sowas gibt es doch UBound(). Bei Stringsplit beispielsweise hab ich mir angewöhnt immer den flag 2 zu setzen, damit er
    das nicht mit speichert. Vermute mal, das kommt von anderen Sprachen, wie C,...

  • Ursache hat Oscar ja schon erläutert: Das erste Element ist kein Datenelement und darf folglich nicht in die Sortierung mit einbezogen werden.
    Lösung: _ArraySort($Prozesse, 0, 1)

    Vermute mal, das kommt von anderen Sprachen, wie C,...

    Gerade eben nicht - das ist eine reine AutoIt-Krankheit.
    Das funktioniert ja nur bei Sprachen mit variabler Typisierung.

    • Offizieller Beitrag

    Welcher Idiot hat sich das denn ausgedacht? Ist doch vollkommen unnötig...

    Ist halt in der Sprache gewachsen und somit erhalten geblieben. Ich empfinde bestimmte Dinge in anderen Sprachen als Humbug (z.B. Array-Index 0- ODER 1-basiert, je nach Geschmäckle, in VB). Ist aber so, muß man mit Leben. ;)

  • Übrirgens - gibt es für Scite eine Möglickeit per Shortcut immer so viele Tabs einzufügen bis zur Spalte 53?

    imho nicht, aber es gibt AlignComment, das kannst du dir umschreiben

    • Offizieller Beitrag

    Hier habe ich mal schnell ein Plugin gezimmert, um bis zu einer bestimmten Spalte mit Leerzeichen aufzufüllen.
    Dazu:
    1. Die angehängte Datei zu den SciTE-Lua Dateien hinzufügen. (Falls du keinen eigenen Skriptordner für Lua-Ordner definiert hast, kopiere die Datei zu den Eigenen Dateien und verlinke per Hardlink in den SciTE-Ordner. Dann bleibt die Datei auch nach einem SciTE-Update erhalten und du brauchst nur neu zu verlinken.)
    2. In SciTEUser.properties einen Eintrag machen für die Zielspalte
    column.to.fill=53
    3. Einen Shortcut definieren in SciTEUser.properties:

    Bash
    command.name.35.*.au3=Fill with Spaces
    command.35.*.au3=dofile C:\Code_AutoIt\LUA\InsertSpacesToColumn.lua
    command.mode.35.*.au3=subsystem:lua,savebefore:yes
    command.shortcut.35.*.au3=Ctrl+Shift+F9

    Den Dateipfad, die Command-Nr und den Shortcut anpassen.